home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / inter52a.zip / INTERRUP.D < prev    next >
Text File  |  1996-10-20  |  359KB  |  10,081 lines

  1. Interrupt List, part 4 of 15
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. --------P-17----DX0ABC-----------------------
  4. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  5.     DX = 0ABCh
  6. Return: AX = AAAAh
  7.     DX = BAAAh
  8.     ES = code segment of resident portion
  9. --------P-17----DX0B90-----------------------
  10. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  11.     DX = 0B90h
  12. Return: DX = ABBBh
  13.     ES = code segment of resident portion
  14. --------P-17----DX0B91-----------------------
  15. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  16.     DX = 0B91h
  17. Return: DX = ABCBh
  18.     ES = code segment of resident portion
  19. --------P-17----DX0F5F-----------------------
  20. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  21.     DX = 0F5Fh
  22. Return: AX = AAAAh
  23.     DX = F555h
  24.     ES = code segment of resident portion
  25. --------B-1700-------------------------------
  26. INT 17 - PRINTER - WRITE CHARACTER
  27.     AH = 00h
  28.     AL = character to write
  29.     DX = printer number (00h-02h)
  30. Return: AH = printer status (see #0528)
  31. SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  32. SeeAlso: INT 4B/AH=00h
  33.  
  34. Bitfields for printer status:
  35. Bit(s)    Description    (Table 0528)
  36.  7    not busy
  37.  6    acknowledge
  38.  5    out of paper
  39.  4    selected
  40.  3    I/O error
  41.  2-1    unused
  42.  0    timeout
  43. Note:    for Tandy 2000, bit 7 indicates printer-busy when set rather than clear
  44. --------B-1701-------------------------------
  45. INT 17 - PRINTER - INITIALIZE PORT
  46.     AH = 01h
  47.     DX = printer number (00h-02h)
  48. Return: AH = printer status (see #0528)
  49. Note:    some printers report that they are ready immediately after
  50.       initialization when they actually are not; a more reliable result may
  51.       be obtained by calling AH=02h after a brief delay
  52. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC",INT 4B/AH=01h
  53. --------B-1702-------------------------------
  54. INT 17 - PRINTER - GET STATUS
  55.     AH = 02h
  56.     DX = printer number (00h-02h)
  57. Return: AH = printer status (see #0528)
  58. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  59. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC",INT 4B/AH=02h
  60. --------P-1702--DX0000-----------------------
  61. INT 17 - INSET - INSTALLATION CHECK
  62.     AH = 02h
  63.     DX = 0000h
  64.     CX = 07C3h (1987d)
  65. Return: CX = 07C2h (1986d) if installed
  66. Program: INSET is a text/graphics integration program
  67. --------b-170200BX5050-----------------------
  68. INT 17 - Enhanced Parallel Port (EPP) BIOS - INSTALLATION CHECK
  69.     AX = 0200h
  70.     BX = 5050h ('PP')
  71.     CH = 45h   ('E')
  72.     DX = printer port number (00h-02h)
  73. Return: AH = status
  74.         00h if installed and port is an enhanced parallel port
  75.         CX:AL = installed BIOS type
  76.             5050h:45h ('PPE') if EPP v3.0+ BIOS installed
  77.             4550h:50h ('EPP') if EPP v1.0 BIOS installed
  78.         ---EPP 1.0, 3.0---
  79.         DX:BX -> far entry point to Advanced BIOS (see #0529)
  80.         ---EPP Revision 7---
  81.         DX = EPP I/O base address
  82.         ES:BX -> far entry point to EPP BIOS (see #0529,#0530)
  83.         03h if installed but specified port not supported
  84.         CF set
  85. Program: The Enhanced Parallel Port BIOS provides support for parallel
  86.       port peripherals using the enhanced modes of the IEEE 1284.
  87. SeeAlso: AH=E0h,MEM 0040h:0008h,MEM 0040h:00DCh
  88.  
  89. (Table 0529)
  90. Call EPP BIOS entry point with:
  91.     DL = port number (v1.0)
  92.     DX = (Revision 7) EPP port I/O base address
  93.     AH = function
  94.         00h Query Configuration
  95.         Return: AH = 00h if successful
  96.                 AL = IRQ number used by port or FFh if no IRQ
  97.                 BH = EPP BIOS revision (major in high nybble,
  98.                   minor in low nybble)
  99.                 BL = I/O capabilities (see #0532)
  100.                 ES:DI -> ASCIZ driver information/version text
  101.                 ---v1.0,v3.0---
  102.                 CX = I/O port base address for parallel port
  103.                 ---Revision 7---
  104.                 CL = EPP chipset code (see #0533)
  105.                 CH = hardware manufacturer's product code
  106.         01h Set Mode
  107.         AL = mode bits (see #0534)
  108.         Return: AX,BX destroyed
  109.         02h Get Mode
  110.         Return: AL = mode bits (see also #0534)
  111.                 bit 7: EPP port interrupts enabled
  112.             AH = 00h
  113.             CF clear
  114.             BX destroyed
  115.         03h Interrupt Control
  116.         AL = subfunction
  117.             00h enable parallel port interrupts
  118.             01h disable parallel port interrupts
  119.         Return: AH = status (00h,05h,06h) (see also #0531)
  120.         04h EPP Reset
  121.         Return: AH = 00h if successful
  122.             AL destroyed
  123.         05h perform Address-Write/Device-Select I/O cycle
  124.         AL = device address
  125.         Return: AH = status
  126.             AL destroyed
  127.         06h perform Address-Read I/O cycle
  128.         Return: AL = returned address/device data
  129.             AH = status
  130.         07h write byte
  131.         AL = data byte to write
  132.         Return: AH = status
  133.         08h output block of data
  134.         DS:SI -> block of data to be sent to parallel port
  135.         CX = number of bytes to output
  136.         Return: AH = status (see #0531)
  137.             CX = number of unsent bytes
  138.         09h read byte of data
  139.         Return: AH = status (see #0531)
  140.             AL = byte read from parallel port
  141.         0Ah read block of data
  142.         ES:DI -> buffer for received data
  143.         CX = number of bytes to read from paralle port
  144.         Return: AH = status (see #0531)
  145.             ES:DI buffer filled if successful
  146.             CX = number of bytes not transferred
  147.         0Bh Address/Byte-Read
  148.         AL = device address
  149.         Return: AH = status (see #0531)
  150.             AL = byte read if successful
  151.         0Ch Address/Byte-Write
  152.         AL = device address
  153.         DH = data byte (v1.0,v3.0)
  154.         CL = data byte (Revision 7)
  155.         Return: AH = status (see #0531)
  156.         0Dh Address/Block-Read
  157.         AL = device address
  158.         ES:DI -> buffer for received data
  159.         CX = number of bytes to read
  160.         Return: AH = status (see #0531)
  161.             CX = number of bytes NOT transferred
  162.         0Eh Address/Block-Write
  163.         AL = device address
  164.         ES:DI -> data to be sent (v1.0,v3.0)
  165.         DS:SI -> data to be send (Revision 7)
  166.         CX = number of bytes to write
  167.         Return: AH = status (see #0531)
  168.             CX = number of bytes NOT transferred
  169.         0Fh Lock Port
  170.         AL = multiplexor port number
  171.             bits 7-4: daisy chain port number (1-8)
  172.             bits 3-0: mux device port number (1-8)
  173.         Return: AH = status (00h,03h,05h) (see #0531)
  174.         10h Unlock Port
  175.         AL = multiplexor port number
  176.             bits 7-4: daisy chain port number (1-8)
  177.             bits 3-0: mux device port number (1-8)
  178.         Return: AH = status (00h,03h,05h) (see #0531)
  179.         11h Device Interrupt
  180.         AL = multiplexor port number
  181.             00h if no multiplexor, else mux device port (01h-08h)
  182.         CH = subfunction
  183.             00h disable device interrupts
  184.             01h enable device interrupt
  185.             ES:DI -> interrupt event handler
  186.         Return: AH = status (00h,03h,05h,06h) (see #0531)
  187.         Note:    AMI BIOS v1.00.12.AX1T uses AL to specify en/disabled
  188.               and ignores multiplexor port number; it also always
  189.               sets INT 0F to the address specified in ES:DI
  190.         12h Real-Time Mode
  191.         AL = subfunction
  192.             00h check whether any real-time devices present
  193.             01h add (advertise) real-time device
  194.             02h remove real-time device
  195.         Return: AH = status (00h,05h,06h,07h) (see #0531)
  196.             AL = real-time devices present? (00h no, 01h yes)
  197.         Note:    unlike all other functions, this one does not use DL/DX
  198. Return: AH = status (see #0531)
  199.     CF clear if successful
  200.     CF set on error
  201.     BX destroyed
  202. SeeAlso: #0530
  203.  
  204. (Table 0530)
  205. Call EPP BIOS (Revision 7) entry point multiplexor functions with:
  206.     DX = EPP port base I/O address
  207.     AH = function
  208.         40h Query Mux
  209.         Return: AH = status (see #0531)
  210.             AL = currently-selected port
  211.             CH = status flags
  212.                 bit 0: channel locked
  213.                 bit 1: interrupt pending
  214.             BX destroyed
  215.         41h Query Device Port
  216.         AL = EPP multiplex device port (1-8)
  217.         Return: AH = status (see #0531)
  218.             CH = status flags (see #0535)
  219.             BX = EPP product/device ID (0000h if undefined)
  220.         42h Set Product ID
  221.         AL = EPP multiplex device port (1-8)
  222.         CX = EPP product ID
  223.         Return: AH = status (see #0531)
  224.             BX destroyed
  225.         50h Query Daisy Chain
  226.         AL = EPP multiplexor device port (1-8)
  227.         Return: AH = status (see #0531)
  228.             CH = status flags
  229.                 bit 0: channel locked
  230.                 bit 1: interrupt pending
  231.             BL = currently-selected device
  232.             BH = EPP daisy chain revision (high nybble = major)
  233.             CL = daisy-chain depth (00h if no daisy chain)
  234.             ES:DI -> ASCIZ driver vendor identification string
  235.         51h Rescan Daisy Chain (dynamically reassign port numbers)
  236.         AL = EPP multiplexor device port (1-8)
  237.         Return: AH = status (see #0531)
  238.             BX destroyed
  239. Note:    these functions are only valid if a port multiplexor or daisy chain
  240.       is present
  241. SeeAlso: #0529,INT 2D/AL=DCh
  242.  
  243. (Table 0531)
  244. Values for EPP BIOS function status:
  245.  00h    successful
  246.  02h    unsupported command/feature
  247.  03h    unsupported parallel port
  248.  05h    unsupported in current mode
  249.  06h    invalid subfunction
  250.  07h    already ???
  251.  20h    (AMI) multiplexor not present
  252.  40h    multiplexor not present
  253.  41h    multiplexor currently locked
  254.  80h    I/O timeout
  255.  FFh    invalid/unsupported function
  256. SeeAlso: #0529,#0530
  257.  
  258. Bitfields for EPP (v3.0, Revision 7) I/O capabilities:
  259. Bit(s)    Description    (Table 0532)
  260.  0    multiplexor present
  261.  1    PS/2 bi-directional capable
  262.  2    daisy chain present
  263.  3    ECP capable
  264.  4    EPP software emulation supported
  265.  5    EPP capable
  266.  6    fast Centronics supported
  267.  7    standard EPP I/O map
  268. SeeAlso: #0529
  269.  
  270. (Table 0533)
  271. Values for EPP (Revision 7) chipset code:
  272.  00h    Intel SL
  273.  01h    FarPoint Communications
  274.  02h    SMC
  275.  03h    Chips&Technologies
  276.  04h    Western Digital
  277.  05h    National Semiconductor
  278. SeeAlso: #0529
  279.  
  280. Bitfields for EPP BIOS mode bits:
  281. Bit(s)    Description    (Table 0534)
  282.  0    set compatibility mode
  283.  1    set bi-directional mode
  284.  2    set EPP mode
  285. ---Revision 7---
  286.  3    set ECP mode
  287.  4    set EPP software emulation
  288.  5    set fast Centronics mode
  289.  6-7 reserved (0)
  290. SeeAlso: #0529,#M051
  291.  
  292. Bitfields for EPP BIOS multiplex status flags:
  293. Bit(s)    Description    (Table 0535)
  294.  0    port is selected
  295.  1    port is locked
  296.  2    interrupts are enabled
  297.  3    interrupt pending
  298. SeeAlso: #0530
  299. --------P-1703-------------------------------
  300. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  301.     AH = 03h
  302. Return: BX = ???
  303.     CX = ???
  304. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  305.       Vertisoft Systems, Inc.
  306. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  307. --------c-1703-------------------------------
  308. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  309.     AH = 03h
  310.     DX = printer port number
  311.     CX = number of characters to print
  312.     DS:SI -> string
  313. Return: AH = printer status (see #0528)
  314.     CX = number of characters actually printed
  315. Desc:    send an entire string of chars to the print spooler with a single call
  316. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  317.       operating system by The Software Link, Inc.
  318. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  319. --------c-1703--BX5A00-----------------------
  320. INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK
  321.     AH = 03h
  322.     BX = 5A00h
  323. Return: AX = 5ACBh
  324.     DI = 0000h
  325.     ES = DMP code segment (also data segment)
  326. Program: DMP is a Printer driver/spooler, by DMP (USA), available on the
  327.       PCTODAY disk, volume 10, March 1991
  328. --------N-170300-----------------------------
  329. INT 17 - DOSISODE to WATTCP TSR Interface - "socket"
  330.     AX = 0300h
  331.     CX = type of socket from  socket( domain, type, protocol )
  332.     DX = local identifier of socket (0 - 31)
  333. Return: AX = 0000h success
  334.         CX = segment of 4500 byte transfer buffer
  335.         DX = offset of 4500 byte transfer buffer
  336.        = FFFFH failure
  337.         CX = error code
  338.         ENFILE        23
  339. Program: DOSISODE is the ISO developers environment which has been ported to
  340.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  341.       Currently it allows a maximum of 6 open sockets.
  342. Note:    this function will initialize the interface the first time it is
  343.       called
  344. SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE"
  345. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  346. --------P-1704-------------------------------
  347. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  348.     AH = 04h
  349. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  350. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  351. --------N-170400-----------------------------
  352. INT 17 - DOSISODE to WATTCP TSR Interface - "bind"
  353.     AX = 0400h
  354. Note:    this function just returns
  355. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE"
  356. --------P-170500-----------------------------
  357. INT 17 U - Emulaser ELTSR - ???
  358.     AX = 0500h
  359.     ???
  360. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  361.     BX = ???
  362.     CX = PSP segment of ELTSR
  363.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  364.     SI = ???
  365.     DI = ???
  366. SeeAlso: AH=04h,INT 1A/AH=E5h
  367. --------N-170500-----------------------------
  368. INT 17 - DOSISODE to WATTCP TSR Interface - "connect"
  369.     AX = 0500h
  370. SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  371. --------P-170501-----------------------------
  372. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  373.     AX = 0501h
  374. Return: (see AX=0500h)
  375. Note:    restores interrupt vectors without checking whether they have been
  376.       hooked by later programs; should only be called if ELTSR reports
  377.       that it is safe to unload
  378. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  379. Index:    uninstall;Emulaser ELTSR
  380. --------P-170502-----------------------------
  381. INT 17 U - Emulaser ELTSR - SET ???
  382.     AX = 0502h
  383.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  384.     CL = ???
  385.     DL = ???
  386. Return: (see AX=0500h)
  387. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  388. --------P-170503-----------------------------
  389. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  390.     AX = 0503h
  391. Return: (see AX=0500h)
  392. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  393. --------P-1706-------------------------------
  394. INT 17 U - Emulaser ELTSR - ???
  395.     AH = 06h
  396.     ???
  397. Return: ???
  398. SeeAlso: AX=0500h,AX=0503h,AH=07h"ELTSR",INT 1A/AH=E5h
  399. --------N-170600-----------------------------
  400. INT 17 - DOSISODE to WATTCP TSR Interface - "listen"
  401.     AX = 0600h
  402. Note:    this function just returns
  403. SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  404. SeeAlso: AX=0E00h"DOSISODE"
  405. --------P-1707-------------------------------
  406. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  407.     AH = 07h
  408.     ES:DX -> ASCIZ filename to be opened
  409. Return: ???
  410. Note:    new output will be appended to the specified file
  411. SeeAlso: AH=08h,INT 1A/AH=E5h
  412. --------N-170700-----------------------------
  413. INT 17 - DOSISODE to WATTCP TSR Interface - "accept"
  414.     AX = 0700h
  415. Note:    this function just returns
  416. SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE"
  417. --------P-1708-------------------------------
  418. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  419.     AH = 08h
  420.     ???
  421. Return: ???
  422. Desc:    close the file previously opened by function 07h
  423. SeeAlso: AH=07h,INT 1A/AH=E5h
  424. --------N-170800-----------------------------
  425. INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom"
  426.     AX = 0800h
  427. SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE"
  428. --------P-1709-------------------------------
  429. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  430.     AH = 09h
  431.     BX = ???
  432.     CX = ???
  433.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  434. Return: AX = status
  435.         00h successful
  436.         FFh failed
  437. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  438.       Vertisoft Systems, Inc.
  439. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  440.       that either ELSPL or Disk Spool II be installed
  441. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  442. --------N-170900-----------------------------
  443. INT 17 - DOSISODE to WATTCP TSR Interface - "sendto"
  444.     AX = 0900h
  445. SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE"
  446. --------P-170A-------------------------------
  447. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  448.     AH = 0Ah
  449.     ES:BX -> ??? buffer
  450.     CX = length of ??? buffer
  451. Return: ???
  452. Note:    copies the specified name into the buffer passed to ELSPL as the
  453.       filename by AH=09h
  454. SeeAlso: AH=09h,INT 1A/AH=E5h
  455. --------N-170A00-----------------------------
  456. INT 17 - DOSISODE to WATTCP TSR Interface - "select"
  457.     AX = 0A00h
  458. SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE"
  459. --------P-170B-------------------------------
  460. INT 17 U - Emulaser ELTSR - GET ???
  461.     AH = 0Bh
  462. Return: AX:BX -> ???
  463. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  464. --------N-170B00-----------------------------
  465. INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl"
  466.     AX = 0B00h
  467.     DX = local identifier of socket (0 - 31)
  468. Note:    this function sets the socket into non_block mode
  469. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  470. --------P-170C-------------------------------
  471. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  472.     AH = 0Ch
  473.     ???
  474. Return: ???
  475. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  476. --------N-170C00-----------------------------
  477. INT 17 - DOSISODE to WATTCP TSR Interface - "close"
  478.     AX = 0C00h
  479. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE"
  480. --------P-170D-------------------------------
  481. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  482.     AH = 0Dh
  483. Return: AX = state (0000h off, 0010h on)
  484. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  485.       the ScrlLk light as its activity indicator
  486. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  487. --------N-170D00-----------------------------
  488. INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE
  489.     AX = 0D00h
  490. Note:    this function is used to shutdown the interface
  491. SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  492. --------P-170E-------------------------------
  493. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  494.     AH = 0Eh
  495. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  496.       Vertisoft Systems, Inc.
  497. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  498.       processed in the background, but may also be called by applications
  499.       to give Emulaser additional CPU time
  500. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  501. --------N-170E00-----------------------------
  502. INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK
  503.     AX = 0E00h
  504. Return: CX = 1234h if installed
  505. Program: DOSISODE is the ISO developers environment which has been ported to
  506.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  507.       Currently it allows a maximum of 6 open sockets.
  508. Note:    this function is used to check if the interface is loaded
  509. SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE"
  510. --------P-172000-----------------------------
  511. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  512.     AX = 2000h
  513.     BL = printer number???
  514. Return: AX = status (see #0536)
  515.     BX = driver version number (BH=major,BL=minor)
  516.     CH = ??? (00h)
  517.     CL = ???
  518.     DX = ??? (0100h)
  519. Note:    also enables the remaining printer driver functions (2001h-2007h)
  520. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  521.  
  522. (Table 0536)
  523. Values for PC Paint function status:
  524.  0000h    successful
  525.  0001h    invalid printer???
  526.  0002h    ???
  527.  0003h    invalid subfunction
  528.  0005h    driver disabled, must call function 00h first
  529.  0009h    unknown printer error
  530.  000Bh    printer not selected
  531.  000Ch    printer out of paper
  532.  000Eh    error while writing to serial printer
  533.  000Fh    ???
  534.  0010h    invalid function number
  535.  0011h    value out of range
  536. --------P-172001-----------------------------
  537. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  538.     AX = 2001h
  539.     BL = printer number???
  540. Return: AX = status (see #0536)
  541. --------P-172002-----------------------------
  542. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  543.     AX = 2002h
  544.     BL = printer number???
  545.     CL = desired information
  546.         00h printer type
  547.         Return: ES:DI -> ASCIZ printer name
  548.         01h paper size
  549.         DX = size index
  550.         Return: ES:DI -> ASCIZ paper size description
  551.         02h ???
  552.         Return: BX = ???
  553.         03h printer information???
  554.         DX = ???
  555.         ES:BX -> buffer for ??? (min 134 bytes)
  556. Return: AX = status (see #0536)
  557. SeeAlso: AX=2000h,AX=2004h
  558. --------P-172003-----------------------------
  559. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  560.     AX = 2003h
  561.     ES:BX -> ???
  562. Return: AX = status (see #0536)
  563. SeeAlso: AX=2000h,AX=2004h
  564. --------P-172004-----------------------------
  565. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  566.     AX = 2004h
  567.     BL = printer number???
  568. Return: AX = status (see #0536)
  569.     ES:DI -> ???
  570. SeeAlso: AX=2000h,AX=2003h
  571. --------P-172005-----------------------------
  572. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  573.     AX = 2005h
  574.     BL = printer number???
  575. Return: AX = status (see #0536)
  576. Note:    this function also clears the flag set by AX=2001h
  577. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  578. --------P-172006-----------------------------
  579. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  580.     AX = 2006h
  581.     BL = printer number???
  582. Return: AX = status (see #0536)
  583. Note:    this function also clears the flag set by AX=2001h and disables
  584.       functions other than AX=2000h
  585. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  586. --------P-172007-----------------------------
  587. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  588.     AX = 2007h
  589. Return: AX unchanged
  590. SeeAlso: AX=2000h
  591. --------N-172400-----------------------------
  592. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  593.     AX = 2400h
  594.     DL = new state
  595.         00h disabled
  596.         01h enabled
  597. Return: DL = 24h if installed
  598.     DH = minor version number
  599.     CX = network address of this machine
  600.     AL = status (see #0537)
  601. SeeAlso: AX=2403h,INT 16/AX=4500h
  602.  
  603. (Table 0537)
  604. Values for NET.24 function status:
  605.  00h    successful
  606.  01h    timeout
  607.  02h    header error
  608.  03h    data error
  609.  04h    busy
  610.  05h    invalid parameters
  611. --------N-172401-----------------------------
  612. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  613.     AX = 2401h
  614.     BL = timeout in clock ticks
  615. Return: AL = status (see #0537)
  616.     DX:BX -> receive buffer
  617. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  618. --------N-172402-----------------------------
  619. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  620.     AX = 2402h
  621.     transmit buffer filled (see AX=2403h)
  622. Return: AL = status (see #0537)
  623. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  624. --------N-172403-----------------------------
  625. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  626.     AX = 2403h
  627. Return: AL = status (see #0537)
  628.     CX = number of characters in receive ring buffer
  629.     DX:BX -> transmit buffer
  630. SeeAlso: AX=2400h,AX=2402h
  631. --------N-172404-----------------------------
  632. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  633.     AX = 2404h
  634.     BX = target address
  635. Return: AL = status (see #0537)
  636. SeeAlso: AX=2402h,AX=2405h
  637. --------N-172405-----------------------------
  638. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  639.     AX = 2405h
  640.     BX = target address
  641. Return: AL = status (see #0537)
  642. SeeAlso: AX=2402h,AX=2404h
  643. --------N-172406-----------------------------
  644. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  645.     AX = 2406h
  646. Return: AL = status (see #0537)
  647. SeeAlso: AX=2407h,AX=240Ah
  648. --------N-172407-----------------------------
  649. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  650.     AX = 2407h
  651. Return: AL = status (see also #0537)
  652.         06h end of data
  653.     DL = received character
  654. SeeAlso: AX=2406h
  655. --------N-172408-----------------------------
  656. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  657.     AX = 2408h
  658. Return: AL = status (see also #0537)
  659.         06h end of data
  660.     CX = number of bytes in receive buffer
  661.     DX:SI -> receive buffer
  662. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  663. --------N-172409-----------------------------
  664. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  665.     AX = 2409h
  666.     BX = target address
  667.     CX = number of data bytes
  668.     DL = command code to send
  669.     DS:SI -> data bytes for command
  670. Return: AL = status (see also #0537)
  671.         03h no response
  672.         06h remote currently unable to perform command
  673. SeeAlso: AX=2405h,AX=2408h
  674. --------N-17240A-----------------------------
  675. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  676.     AX = 240Ah
  677. Return: AL = status (see #0537)
  678. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  679. --------N-17240B-----------------------------
  680. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  681.     AX = 240Bh
  682.     DL = character to send
  683. Return: AL = status (see also AX=2400h)
  684.         03h transmission error
  685.         06h write error
  686. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  687. --------N-17240C-----------------------------
  688. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  689.     AX = 240Ch
  690. Return: AL = status (see also AX=2400h)
  691.         03h transmission error
  692.         06h remote breaks connection
  693. SeeAlso: AX=240Ah,AX=240Bh
  694. --------J-175000-----------------------------
  695. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  696.     AX = 5000h
  697.     BX = country code
  698.         0001h USA (English), 0051h Japan
  699. Return: AL = status
  700.         00h successful
  701.         01h bad country code
  702.         02h other error
  703. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  704. --------J-175001-----------------------------
  705. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  706.     AX = 5001h
  707. Return: AL = status
  708.         00h successful
  709.         BX = country code
  710.         02h error
  711. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  712. --------J-1751-------------------------------
  713. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  714.     AH = 51h
  715.     DX = 2-byte JIS code
  716. Return: DX = shift-JIS value or 0000h on error
  717. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  718.       characters to Shift-JIS characters, and the other performs the
  719.       opposite conversion
  720. SeeAlso: AX=5000h,AH=52h
  721. --------J-1752-------------------------------
  722. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  723.     AH = 52h
  724.     DX = 2-byte shift-JIS code
  725. Return: DX = JIS code or 0000h on error
  726. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  727.       characters to Shift-JIS characters, and the other performs the
  728.       opposite conversion
  729. SeeAlso: AH=51h
  730. --------V-1760-------------------------------
  731. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  732.     AH = 60h
  733. Return: AL = 60h
  734.     DX = CS of resident code
  735. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  736.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  737.       consisting of an 80h followed by the actual command
  738. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  739. --------V-1761-------------------------------
  740. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  741.     AH = 61h
  742. Return: AL = 61h
  743.     DX = CS of resident code
  744. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  745. --------P-1762-------------------------------
  746. INT 17 U - T2PS v1.0 - UNINSTALL
  747.     AH = 62h
  748. Return: nothing
  749. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  750. --------P-1763-------------------------------
  751. INT 17 U - T2PS v1.0 - SET PARAMETERS
  752.     AH = 63h
  753.     ES:SI -> settings (see #0538)
  754. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  755.       Technologies
  756. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  757.  
  758. Format of T2PS settings:
  759. Offset    Size    Description    (Table 0538)
  760.  00h    WORD    LPT port number (0=LPT1, etc.)
  761.  02h    WORD    page heigh in points
  762.  04h    WORD    page width in points
  763.  06h    WORD    top margin in points
  764.  08h    WORD    bottom margin in points
  765.  0Ah    WORD    left margin in points
  766.  0Ch    WORD    right margin in points
  767.  0Eh    WORD    font size in points
  768.  10h    WORD    tab size
  769.  12h    WORD    timeout in clock ticks
  770. --------P-1764-------------------------------
  771. INT 17 U - T2PS v1.0 - GET PARAMETERS
  772.     AH = 64h
  773.     ES:SI -> buffer for settings (see #0538)
  774. Return: ES:SI buffer filled
  775. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  776. --------b-176F00BX0000-----------------------
  777. INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK
  778.     AX = 6F00h
  779.     BX = 0000h
  780. Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available
  781. SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h
  782. SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra"
  783. --------b-176F02-----------------------------
  784. INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER
  785.     AX = 6F02h
  786.     CX = size of buffer in bytes
  787.     DX = port number (0-3)
  788.     ES:DI -> buffer containing characters to be printed
  789. Return: AH = printer status (see #0528)
  790.     CX = number of bytes successfully printed
  791.     ---on error (AH bit 0 set)---
  792.         ES:DI -> next byte to be sent
  793.     ---if successful---
  794.         ES:DI unchanged
  795. SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h
  796. --------N-1781-------------------------------
  797. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  798.     AH = 81h
  799.     AL = 00h (NTNX compatibility mode)
  800.     CL = number of jobs to cancel
  801. Return: AL = status (see #0539)
  802. Note:    this function cancels the last CL printouts for the current task
  803. SeeAlso: AH=82h
  804.  
  805. (Table 0539)
  806. Values for Alloy status:
  807.  00h    success
  808.  01h-7Fh warning
  809.  80h    general failure
  810.  81h    host overloaded (NTNX only)
  811.  82h    module busy (NTNX only)
  812.  83h    host busy (NTNX only)
  813.  84h    re-entry flag set
  814.  85h    invalid request
  815.  86h    invalid printer
  816.  87h    invalid process ID
  817.  89h    access denied
  818.  8Ah    option not available for given port type
  819.  8Bh    option not available for given task type
  820.  91h    printer busy
  821.  C2h    file not found
  822.  C3h    path not found
  823.  C4h    file access failure
  824. --------N-1782-------------------------------
  825. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  826.     AH = 82h
  827.     AL = 00h (NTNX compatibility mode)
  828. Return: AL = status (see #0539)
  829. SeeAlso: AH=81h
  830. --------N-1783-------------------------------
  831. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  832.     AH = 83h
  833.     AL = mode
  834.         00h NTNX compatibility
  835.         CL = number of copies (max 99, default 1)
  836.         02h MW386 v2+
  837.         BX = logical device number
  838.             00h-03h = LPT1-LPT4
  839.             04h-07h = COM1-COM4
  840.         CX = number of copies
  841. Return: AL = status (see #0539)
  842. Note:    in NTNX compatibility mode, this function only affects LPT1
  843. --------N-1784-------------------------------
  844. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  845.     AH = 84h
  846.     AL = mode
  847.         00h NTNX compatibility
  848.         02h MW386 v2+
  849.         BX = logical device number
  850.             00h-03h = LPT1-LPT4
  851.             04h-07h = COM1-COM4
  852. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  853.       under MW386 in NTNX compatibility mode)
  854. --------J-1784-------------------------------
  855. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  856.     AH = 84h
  857.     AL = character
  858.     DX = printer number
  859. Return: AH = printer status (see #0528)
  860. SeeAlso: AH=00h,AH=85h
  861. --------J-1785-------------------------------
  862. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  863.     AH = 85h
  864.     AL = new state (00h enabled, 01h disabled)
  865. SeeAlso: AH=84h"AX"
  866. --------N-1787-------------------------------
  867. INT 17 - Alloy NTNX - SET INDOS POINTER
  868.     AH = 87h
  869.     AL = 00h
  870.     CX:BX -> buffer for user-written printer drivers
  871. Return: BX,CX destroyed
  872. Note:    must be executed before the printer is enabled
  873. SeeAlso: AH=8Ah
  874. --------N-1788-------------------------------
  875. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  876.     AH = 88h
  877.     AL = mode
  878.         00h NTNX compatibility
  879.         DX = NTNX printer number (see #0540)
  880.         01h MW386
  881.         DX = MW386 printer number
  882. Return: AH = status (see #0539)
  883. Note:    removes specified printer from the spooler's list of printers
  884. SeeAlso: AH=89h,AH=8Bh
  885.  
  886. (Table 0540)
  887. Values for Alloy NTNX printer number:
  888.  00h    host LPT1
  889.  01h    host LPT2
  890.  02h    host LPT3
  891.  03h    host LPT4
  892.  04h    host COM1
  893.  05h    host COM2
  894.  06h    user's logical COM2
  895.  07h    user's terminal AUX port
  896.  08h    user's logical COM1 (MW386 only)
  897. --------N-1789-------------------------------
  898. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  899.     AH = 89h
  900.     AL = mode
  901.         00h NTNX compatibility
  902.         DX = NTNX printer number (see #0540)
  903.         01h MW386
  904.         DX = MW386 printer number
  905. Return: AL = status (see #0539)
  906. Note:    the specified printer is added to the spooler's list of available
  907.       printers
  908. SeeAlso: AH=88h,AH=8Bh
  909. --------N-178A-------------------------------
  910. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  911.     AH = 8Ah
  912.     ???
  913. SeeAlso: AH=92h
  914. --------N-178B-------------------------------
  915. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  916.     AH = 8Bh
  917.     DS:DX -> ASCIZ printer name
  918. Return: AL = status (see also AH=81h)
  919.         00h successful
  920.         DX = physical device number
  921. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  922. --------N-178C-------------------------------
  923. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  924.     AH = 8Ch
  925.     DX = physical device number
  926.     ES:DI -> 17-byte buffer for ASCIZ device name
  927. Return: AL = status (see also AH=81h)
  928.         00h successful
  929.         ES:DI buffer filled
  930. SeeAlso: AH=88h,AH=8Bh
  931. --------N-178D-------------------------------
  932. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  933.     AH = 8Dh
  934.     AL = 00h
  935. Return: AL = status (see #0539)
  936. Notes:    clears all buffers and resets spooler to boot-up values
  937.     MW386 supports this function for compatibility only; it is a NOP
  938. --------N-178E-------------------------------
  939. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  940.     AH = 8Eh
  941.     AL = 00h
  942. Return: CX:BX -> INT 28 entry point
  943. SeeAlso: AH=8Fh
  944. --------N-178F-------------------------------
  945. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  946.     AH = 8Fh
  947.     AL = 00h
  948. Return: CX:BX -> DOS intercept routine
  949. SeeAlso: AH=8Eh
  950. --------N-1790-------------------------------
  951. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  952.     AH = 90h
  953.     AL = mode
  954.         00h NTNX compatibility
  955.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  956.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  957.         02h MW386 v2+
  958.         BX = logical device number
  959.             00h-03h = LPT1-LPT4
  960.             04h-07h = COM1-COM4
  961.     CX:SI -> ASCIZ pathname
  962. Return: AL = status (see #0539)
  963. Note:    in mode 00h, the file is always sent to logical LPT1
  964. SeeAlso: AH=A0h
  965. --------N-1791-------------------------------
  966. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  967.     AH = 91h
  968.     AL = mode
  969.         00h NTNX compatibility
  970.         Return: CX = user number (00h = host)
  971.             DX = currently selected printer number (00h-08h)
  972.         01h MW386
  973.         Return: CX = user number
  974.             DX = physical dev number of currently selected printer
  975.         02h MW386 v2+
  976.         BX = logical device number
  977.             00h-03h = LPT1-LPT4
  978.             04h-07h = COM1-COM4
  979.         Return: CX = user number
  980.             DX = physical device number
  981. Return: AL = status (see #0539)
  982. SeeAlso: AH=8Ch
  983. --------N-1792-------------------------------
  984. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  985.     AH = 92h
  986.     AL = 00h
  987.     CL = 00h
  988. Return: CL = driver state
  989.         01h initialized
  990.         80h not initialized
  991.     AX = status (see #0539)
  992. SeeAlso: AH=8Ah
  993. --------N-1794-------------------------------
  994. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  995.     AH = 94h
  996.     AL = mode
  997.         00h NTNX compatibility
  998.         DX = NTNX printer number (see #0540)
  999.         01h MW386
  1000.         DX = MW386 printer number
  1001.         02h MW386 v2+
  1002.         BX = logical printer number
  1003.         DX = MW386 printer number
  1004. Return: AL = status (see #0539)
  1005. Note:    modes 00h and 01h affect only logical LPT1
  1006. SeeAlso: AH=8Bh,AH=95h
  1007. --------N-1795-------------------------------
  1008. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  1009.     AH = 95h
  1010.     AL = mode
  1011.         00h NTNX compatibility
  1012.         Return: DX = NTNX printer number (see #0540)
  1013.                 (FFFFh if current printer not compatible with NTNX)
  1014.         01h MW386
  1015.         Return: DX = MW386 printer number
  1016.         02h MW386 v2+
  1017.         BX = logical device number
  1018.             00h-03h = LPT1-LPT4
  1019.             04h-07h = COM1-COM4
  1020.         Return: DX = MW386 printer number (FFFFh = none)
  1021. Return: AL = status (see #0539)
  1022. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  1023. SeeAlso: AH=94h
  1024. --------N-1796-------------------------------
  1025. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  1026.     AH = 96h
  1027.     AL = 00h
  1028. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  1029.       returning
  1030. SeeAlso: INT 14/AH=24h
  1031. --------N-1797-------------------------------
  1032. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  1033.     AH = 97h
  1034.     AL = mode
  1035.         00h NTNX compatibility
  1036.         02h MW386 v2+
  1037.         BX = logical device number
  1038.             00h-03h = LPT1-LPT4
  1039.             04h-07h = COM1-COM4
  1040.     CH,CL,DH = three character break sequence
  1041.     DL = subfunction
  1042.         00h set break string
  1043.         else reset break
  1044. Return: AL = status (see #0539)
  1045. Notes:    mode 00h affects only logical LPT1
  1046.     when the break string is encountered, the spool file will be closed and
  1047.       queued for printing automatically
  1048.     the break string is not permanently saved, and will be reset each time
  1049.       MW386 or the user is rebooted
  1050. SeeAlso: AH=9Bh
  1051. --------N-1798-------------------------------
  1052. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  1053.     AH = 98h
  1054.     AL = 00h
  1055.     DL = printer number (FFh=current)
  1056. Return: AL = status
  1057.         00h successful
  1058.         01h incorrect printer
  1059.         02h task not found
  1060. Note:    MW386 supports this function for compatibility only; it is a NOP
  1061. --------N-1799-------------------------------
  1062. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  1063.     AH = 99h
  1064.     AL = mode
  1065.         00h NTNX compatibility
  1066.         DL = NTNX printer number (see #0540)
  1067.             (FFh = task's current logical LPT1)
  1068.         DH = mode (see #0541)
  1069.         01h MW386
  1070.         DX = MW386 printer number
  1071.         CL = mode (as for DH above)
  1072. Return: AL = status (see #0539)
  1073.     DH = mode (bits 1 and 2 set as above)
  1074.     DL = printer owner's user number if not spooled
  1075.  
  1076. Bitfields for Alloy printer mode:
  1077.  0    get mode if 1, set mode if 0    (Table 0541)
  1078.  1    private ("attached")
  1079.  2    direct instead of spooled
  1080.  3-7    reserved (0)
  1081. --------N-179A-------------------------------
  1082. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  1083.     AH = 9Ah
  1084.     AL = mode
  1085.         00h NTNX compatibility
  1086.         DX = NTNX printer number (see #0540)
  1087.             (FFFFh = current logical LPT1)
  1088.         01h MW386
  1089.         DX = MW386 printer number
  1090.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  1091. Return: AL = status (see #0539)
  1092. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  1093.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  1094. SeeAlso: AH=A4h
  1095. --------N-179B-------------------------------
  1096. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  1097.     AH = 9Bh
  1098.     AL = mode
  1099.         00h NTNX compatibility
  1100.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  1101.         01h MW386
  1102.         CX = timeout value in seconds (00h = never)
  1103.         02h MW386 v2+
  1104.         BX = logical device number
  1105.             00h-03h = LPT1-LPT4
  1106.             04h-07h = COM1-COM4
  1107.         CX = timeout value in seconds (00h = never)
  1108. Return: AL = status (see #0539)
  1109. Notes:    modes 00h and 01h affect only the current logical LPT1
  1110.     if no data is sent to a printer for the specified amount of time, the
  1111.       spool file will be closed and queued for printing automatically
  1112. SeeAlso: AH=97h
  1113. --------N-17A0-------------------------------
  1114. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  1115.     AH = A0h
  1116.     AL = mode
  1117.         00h NTNX compatibility
  1118.         DX = ??? (NTNX, MW386 v1.x only)
  1119.         02h MW386 v2+
  1120.         BX = logical device number
  1121.             00h-03h = LPT1-LPT4
  1122.             04h-07h = COM1-COM4
  1123.     CX:SI -> ASCIZ pathname
  1124. Return: AL = status (see #0539)
  1125. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  1126.       the original file to be modified or deleted while the copy is printed
  1127.     in mode 00h, the file is printed on logical LPT1
  1128. SeeAlso: AH=90h
  1129. --------N-17A4-------------------------------
  1130. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  1131.     AH = A4h
  1132.     AL = new state
  1133.         00h form feed after end of print job disabled
  1134.         01h form feed enabled
  1135. Return: AL = status (see #0539)
  1136. Note:    only affects the current logical LPT1
  1137. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  1138. --------N-17A6-------------------------------
  1139. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  1140.     AH = A6h
  1141.     AL = new state
  1142.         00h banner page before print job disabled
  1143.         01h banner page enabled
  1144. Return: AL = status (see #0539)
  1145. Note:    only affects the current logical LPT1
  1146. SeeAlso: AH=A4h
  1147. --------N-17A7-------------------------------
  1148. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  1149.     AH = A7h
  1150.     AL = spool flags (see #0542)
  1151.     BX = logical device number
  1152.         00h-03h = LPT1-LPT4
  1153.         04h-07h = COM1-COM4
  1154. Return: AL = status (see #0539)
  1155. Note:    the documentation does not state which register contains the result of
  1156.       a GET
  1157. SeeAlso: AH=A4h,AH=A6h
  1158.  
  1159. Bitfields for Alloy spool flags:
  1160. Bit(s)    Description    (Table 0542)
  1161.  0    banner page enabled (see AH=A6h)
  1162.  1    form feed enabled (see AH=A4h)
  1163.  2-6    reserved (0)
  1164.  7    set flags if 1, get flags if 0
  1165. --------N-17A8-------------------------------
  1166. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  1167.     AH = A8h
  1168.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  1169. Return: AL = status (see #0539)
  1170. Note:    allows application to specify banner page filename for spool files
  1171.       collected from the application's printer output
  1172. SeeAlso: AH=A9h
  1173. --------N-17A9-------------------------------
  1174. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  1175.     AH = A9h
  1176.     AL = new spool drive (2=C:,3=D:,etc)
  1177. Return: AL = status (see #0539)
  1178. Note:    does not remove previous spooling directory since jobs may be pending
  1179. SeeAlso: AH=A8h
  1180. --------N-17AA-------------------------------
  1181. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  1182.     AH = AAh
  1183.     AL = mode
  1184.         00h NTNX
  1185.         DX = NTNX printer number (see #0540)
  1186.         01h MW386
  1187.         DX = MW386 printer number
  1188. Return: AH = instantaneous printer status
  1189.         00h printer ready
  1190.         01h not ready
  1191.         12h off line
  1192.         13h out of paper
  1193.         14h general device failure
  1194.         15h device timeout
  1195.         16h bad device number
  1196. --------N-17AF-------------------------------
  1197. INT 17 - Alloy MW386 - CHECK SPOOLER
  1198.     AH = AFh
  1199. Return: AX = 55AAh if spooler available
  1200. --------c-17C0-------------------------------
  1201. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  1202.     AH = C0h
  1203.     DX = printer port (0-3)
  1204. Return: ES:BX -> control block (see #0543)
  1205. SeeAlso: AH=C1h
  1206.  
  1207. Format of PCSpool control block:
  1208. Offset    Size    Description    (Table 0543)
  1209.  00h    WORD    printer number
  1210.  02h    WORD    address of printer status port
  1211.  04h    WORD    number of first record in queue
  1212.  06h    WORD    number of last record in queue
  1213.  08h    DWORD    characters already printed
  1214.  0Ch    DWORD    number of characters remaining
  1215.  10h    DWORD    pointer to dequeue buffer
  1216.  14h    DWORD    previous count of characters printed
  1217.  18h    DWORD    number of clock ticks taken to print them
  1218.  1Ch    WORD    offset of next character to output
  1219.  1Eh    WORD    offset of next character to print
  1220.  20h    WORD    pointer to spooling queue record
  1221.  22h    BYTE    current spooling status
  1222.  23h    BYTE    current printer status:
  1223.         00h OK
  1224.         01h not ready
  1225.         02h paused with message
  1226.         03h paused
  1227.         04h initializing
  1228.         FEh non-existent port
  1229.         FFh not spooled
  1230.  24h    BYTE    current control record type
  1231.  25h    WORD    observed printer speed
  1232.  27h    WORD    characters to print per service
  1233.  29h    BYTE    01h if disk write needed
  1234.  2Ah    BYTE    01h if queued data should be flushed
  1235.  2Bh    BYTE    01h to update cps status
  1236. --------c-17C1--------------------------------
  1237. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  1238.     AH = C1h
  1239.     DX = printer port (0-3)
  1240.     DS:SI -> ASCIZ string to save for display
  1241. Note:    flushes pending writes
  1242. SeeAlso: AH=C0h,AH=C2h
  1243. --------c-17C2-------------------------------
  1244. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  1245.     AH = C2h
  1246.     DX = printer port (0-3)
  1247. SeeAlso: AH=C3h
  1248. --------c-17C3-------------------------------
  1249. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  1250.     AH = C3h
  1251.     DX = printer port (0-3)
  1252. SeeAlso: AH=C2h,AH=C7h
  1253. --------c-17C4-------------------------------
  1254. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  1255.     AH = C4h
  1256. Return: DI = B0BFh
  1257.     SI = segment
  1258. --------c-17C5-------------------------------
  1259. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  1260.     AH = C5h
  1261.     DX = printer port (0-3)
  1262. Note:    cancels up to the pause record
  1263. --------c-17C6-------------------------------
  1264. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  1265.     AH = C6h
  1266.     DX = printer port (0-3)
  1267. Return: AX = queue status
  1268.        0000h printer not active or at pause
  1269.        0001h printer busy
  1270. --------c-17C7-------------------------------
  1271. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  1272.     AH = C7h
  1273.     DX = printer port (0-3)
  1274. SeeAlso: AH=C3h
  1275. --------P-17CD00-----------------------------
  1276. INT 17 - INSET - EXECUTE COMMAND STRING
  1277.     AX = CD00h
  1278.     DS:DX -> ASCIZ command string (max 80 bytes)
  1279. Return: CX = 07C2h (1986d)
  1280. Note:    user interface menus pop up after last command, unless that command
  1281.     exits INSET
  1282. --------P-17CD01-----------------------------
  1283. INT 17 - INSET - GET IMAGE SIZE
  1284.     AX = CD01h
  1285.     DS:DX -> ASCIZ name of image file
  1286. Return: AX = height in 1/720th inch
  1287.     BX = width in 1/720th inch
  1288.     CX = 07C2h (1986d)
  1289. --------P-17CD02-----------------------------
  1290. INT 17 - INSET - INITIALIZE
  1291.     AX = CD02h
  1292. Return: CX = 07C2h (1986d)
  1293. Note:    all open files are closed and the printer is reset
  1294. SeeAlso: AX=CD04h
  1295. --------P-17CD03-----------------------------
  1296. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  1297.     AX = CD03h
  1298. Return: CX = 07C2h (1986d)
  1299. --------P-17CD04-----------------------------
  1300. INT 17 - INSET - INITIALIZE LINKED MODE
  1301.     AX = CD04h
  1302.     ES:SI -> FAR routine for linked mode (see #0544)
  1303. Return: CX = 07C2h
  1304. SeeAlso: AX=CD02h,AX=CD08h
  1305.  
  1306. (Table 0544)
  1307. Values INSET linked-mode routine is called with:
  1308.     AL = function
  1309.         00h send character to printer
  1310.         BL = character to send
  1311.         01h send string to printer
  1312.         CX = number of bytes to send
  1313.         DS:DX -> buffer containing data
  1314.         02h move print head to horizontal starting position of image
  1315. Return: AX = status
  1316.         0000h success
  1317.         0001h failure
  1318. --------P-17CD05-----------------------------
  1319. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  1320.     AX = CD05h
  1321.     DS:DX -> ASCIZ name of PIX file
  1322.     CX = left margin of text in 1/720th inch
  1323. Return: AH = printer type
  1324.         00h page-oriented (multiple images may be placed side-by-side)
  1325.         01h line-oriented (use AX=CD06h for vertical paper movement)
  1326.     CX = 07C2h (1986d)
  1327. SeeAlso: AX=CD07h
  1328. --------P-17CD06-----------------------------
  1329. INT 17 - INSET - GRAPHICS LINE FEED
  1330.     AX = CD06h
  1331. Return: AH = completion status
  1332.         00h image complete
  1333.         01h image incomplete
  1334.     CX = 07C2h (1986d)
  1335. SeeAlso: AX=CD09h
  1336. --------P-17CD07-----------------------------
  1337. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  1338.     AX = CD07h
  1339. Return: CX = 07C2h
  1340. SeeAlso: AX=CD05h
  1341. --------P-17CD08-----------------------------
  1342. INT 17 - INSET - CANCEL LINK MODE
  1343.     AX = CD08h
  1344. Return: CX = 07C2h
  1345. SeeAlso: AX=CD04h
  1346. --------P-17CD09-----------------------------
  1347. INT 17 - INSET - ALTER TEXT LINE SPACING
  1348.     AX = CD09h
  1349.     CX = line spacing in 1/720th inch
  1350. Return: CX = 07C2h
  1351. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  1352. SeeAlso: AX=CD06h
  1353. --------P-17CD0A-----------------------------
  1354. INT 17 - INSET - GET SETUP
  1355.     AX = CD0Ah
  1356.     DS:DX -> buffer for IN.SET data
  1357. Return: CX = 07C2h
  1358. --------P-17CD0B-----------------------------
  1359. INT 17 - INSET - START GETTING SCALED IMAGE
  1360.     AX = CD0Bh
  1361.     DS:SI -> ASCIZ pathname of .PIX file
  1362.     BX = number of bitplanes
  1363.     CX = number of rows in output bitmap
  1364.     DX = number of columns in output bitmap
  1365. Return: AX = status
  1366.         0000h OK
  1367.         FFFFh error
  1368. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  1369. --------P-17CD0C-----------------------------
  1370. INT 17 - INSET - GET NEXT IMAGE STRIP
  1371.     AX = CD0Ch
  1372. Return: AX = status
  1373.         0000h OK but not complete
  1374.         0001h OK and image complete
  1375.         FFFFh error
  1376.     DS:SI -> buffer (max 4K) for bit map strip
  1377.     CX = start row
  1378.     DX = number of rows
  1379.     BX = offset in bytes between bit planes
  1380. Note:    buffer may be overwritten by subsequent calls
  1381. SeeAlso: AX=CD0Bh
  1382. --------P-17E0-------------------------------
  1383. INT 17 - EPP BIOS - INSTALLATION CHECK
  1384.     AH = E0h
  1385. Return: ??? (AH <> E0h if installed ???)
  1386. SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h
  1387. --------P-17E1-------------------------------
  1388. INT 17 - EPP BIOS - DISABLE EPP
  1389.     AH = E1h
  1390.     ???
  1391. Return: ???
  1392. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h
  1393. --------P-17E2-------------------------------
  1394. INT 17 - EPP BIOS - ENABLE EPP
  1395.     AH = E2h
  1396.     ???
  1397. Return: ???
  1398. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h
  1399. --------P-17F0-------------------------------
  1400. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  1401.     AH = F0h
  1402.     DX = printer port (0-3)
  1403. Return: AX = 0001h Jetstream present
  1404.          else  non-Jetstream port
  1405. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  1406.       to drive printers at up to 80000 characters per second
  1407. --------P-17F1-------------------------------
  1408. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  1409.     AH = F1h
  1410.     CX = data buffer length
  1411.     DX = printer port (0-3)
  1412.     DS:SI -> data buffer
  1413. Return: AX = status
  1414.         0000h printer not ready (see also AH=02h)
  1415.         other printing started
  1416. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  1417. --------P-17F2-------------------------------
  1418. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  1419.     AH = F2h
  1420.     DX = printer port (0-3)
  1421. Return: AX = status
  1422.         0000h prior print request finished
  1423.         other number of characters left to print
  1424. SeeAlso: AH=02h,AH=F1h,AH=F3h
  1425. --------P-17F3-------------------------------
  1426. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  1427.     AH = F3h
  1428.     DX = printer port (0-3)
  1429. Return: AX = number of unprinted characters due to abort
  1430. SeeAlso: AH=F1h,AH=F4h
  1431. --------P-17F4-------------------------------
  1432. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  1433.     AH = F4h
  1434.     DX = printer port (0-3)
  1435.     DS:DS -> FAR post address (called with interrupts on)
  1436. SeeAlso: AH=F1h,AH=F3h
  1437. --------P-17F5-------------------------------
  1438. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  1439.     AH = F5h
  1440.     CX = data buffer length
  1441.     DX = printer port (0-3)
  1442.     DS:SI -> data buffer (32-bit physical address)
  1443. Return: AX = status
  1444.         0000h printer not ready (see also AH=02h)
  1445.         other printing started
  1446. SeeAlso: AH=F1h
  1447. --------c-17FF--BX0000-----------------------
  1448. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  1449.     AH = FFh
  1450.     BX = 0000h
  1451.     CX = 0000h
  1452.     DX = printer port number
  1453. Return: AH = printer status (see #0528 at AH=00h)
  1454. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  1455.       operating system by The Software Link, Inc.
  1456. Desc:    close the spool file immediately instead of waiting for the close time
  1457.       to elapse
  1458. SeeAlso: AH=01h,AH=03h"PC-MOS"
  1459. --------B-18---------------------------------
  1460. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  1461. Desc:    called when there is no bootable disk available to the system
  1462. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  1463.       unpredictable on compatibles; this interrupt often reboots the
  1464.       system, and often has no effect at all
  1465.     network cards with their own BIOS can hook this interrupt to allow
  1466.       a diskless boot off the network (even when a hard disk is present
  1467.       if none of the partitions is marked as the boot partition)
  1468. SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
  1469. --------J-1800-------------------------------
  1470. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  1471.     AH = 00h
  1472. Return: AX = keystroke
  1473. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  1474. --------J-1801-------------------------------
  1475. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  1476.     AH = 01h
  1477. Return: BH = status
  1478.         00h no keystrokes available
  1479.         01h keystroke available
  1480.         AX = keystroke
  1481. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  1482. --------J-1802-------------------------------
  1483. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  1484.     AH = 02h
  1485. Return: AL = shift flags
  1486. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  1487. --------J-1803-------------------------------
  1488. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  1489.     AH = 03h
  1490.     ???
  1491. Return: ???
  1492. SeeAlso: AH=00h,AH=04h
  1493. --------J-1804-------------------------------
  1494. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  1495.     AH = 04h
  1496.     ???
  1497. Return: ???
  1498. Note:    details are not available at this time
  1499. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  1500. --------J-18---------------------------------
  1501. INT 18 - NEC PC-9800 series - VIDEO
  1502.     AH = function
  1503.         0Ah set video mode
  1504.         0Bh get video mode
  1505.         0Ch start text screen display
  1506.         0Dh end text screen display
  1507.         0Eh set single display area
  1508.         0Fh set multiple display area
  1509.         10h set cursor shape
  1510.         11h display cursor
  1511.         12h terminate cursor
  1512.         13h set cursor position
  1513.         14h read font patter
  1514.         16h initialize text video RAM
  1515.         1Ah define user character
  1516.         others
  1517.     ???
  1518. Return: ???
  1519. Notes:    details are not available at this time
  1520.     text video RAM is located at segments A000h (characters) and A200h
  1521.       (attributes), graphics video RAM at segment C000h
  1522.  
  1523. Bitfields for NEC PC-9800 series video attributes:
  1524. Bit(s)    Description    (Table 0545)
  1525.  0    disable drawing character
  1526.  1    blinking
  1527.  2    reverse video
  1528.  3    underline
  1529.  4    vertical line
  1530.  7-5    color
  1531.     (0=black, 1=blue, 2=red, 3=purple, 4=green, 5=cyan, 6=yellow, 7=white)
  1532. --------J-180E-------------------------------
  1533. INT 18 - NEC PC-9800 series - SET SINGLE DISPLAY AREA
  1534.     AH = 0Eh
  1535.     DX = offset of first byte to display???
  1536. Return: ???
  1537. SeeAlso: AH=1Bh,MEM 0050h:0001h
  1538. --------J-181B-------------------------------
  1539. INT 18 - NEC PC-9800 series - SET DISPLAY MODE
  1540.     AH = 1Bh
  1541.     AL = ??? (00h for text mode)
  1542. Return: ???
  1543. --------r-185350BX4849-----------------------
  1544. INT 18 - SPHINX C-- - WB.COM - API
  1545.     AX = 5350h ('SP')
  1546.     BX = 4849h ('HI')
  1547.     CX = 4E58h ('NX')
  1548.     DH = function
  1549.         01h set ???
  1550.         DL = ???
  1551.         02h get ???
  1552.         Return: DL = ???
  1553.         03h get ???
  1554.         Return: ES:DI -> ??? data buffer
  1555.         06h ???
  1556. Return: AX = 7370h ('sp') if installed
  1557.     BX = 6869h ('hi') if installed
  1558.     CX = 6E78h ('nx') if installed
  1559. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  1560.       which is a cross between C and assembler; WB.COM is the driver which
  1561.       launches the WorkBench
  1562. --------s-186900-----------------------------
  1563. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  1564.     AX = 6900h
  1565. Return: AX = amount of DRAM on card or 0000h if GUS not available
  1566. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  1567.       and then shells out the the program requiring its services
  1568. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  1569. --------s-186901-----------------------------
  1570. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  1571.     AX = 6901h
  1572.     BX = number of active voices (14-32)
  1573. Return: nothing
  1574. SeeAlso: AX=6900h
  1575. --------s-186902-----------------------------
  1576. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  1577.     AX = 6902h
  1578.     BX = voice number (00h-1Fh)
  1579.     CX = linear volume (0000h-01FFh)
  1580. Return: nothing
  1581. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  1582. --------s-186903-----------------------------
  1583. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  1584.     AX = 6903h
  1585.     BX = voice number (00h-1Fh)
  1586.     CX = frequency in Hz (0-44100)
  1587. Return: nothing
  1588. SeeAlso: AX=6902h,AX=6904h
  1589. --------s-186904-----------------------------
  1590. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  1591.     AX = 6904h
  1592.     BX = voice number (00h-1Fh)
  1593.     CX = balance (0 = left, 7 = even, 15 = right)
  1594. Return: nothing
  1595. SeeAlso: AX=6902h,AX=6903h
  1596. --------s-186905-----------------------------
  1597. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  1598.     AX = 6905h
  1599.     BL = voice number
  1600.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  1601.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  1602.     CH:DI = 20-bit starting address for voice data
  1603.     DL:SI = 20-bit address for loop start
  1604.     DH:BP = 20-bit address for loop end
  1605. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  1606. --------s-186906-----------------------------
  1607. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  1608.     AX = 6906h
  1609.     BL = data format (1 = twos-complement, 0 = not)
  1610.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  1611.     CX = number of bytes to send
  1612.     ES:SI -> buffer containing data
  1613.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  1614. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  1615. --------s-186907-----------------------------
  1616. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  1617.     AX = 6907h
  1618.     BX = voice number (00h-1Fh)
  1619. Return: nothing
  1620. SeeAlso: AX=6908h,AX=690Dh
  1621. --------s-186908-----------------------------
  1622. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  1623.     AX = 6908h
  1624.     BX = voice number (00h-1Fh)
  1625.     CL:DX = 20-bit ending address
  1626. Return: nothing
  1627. SeeAlso: AX=690Bh
  1628. --------s-186909-----------------------------
  1629. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  1630.     AX = 6909h
  1631.     BL = voice number (00h-1Fh)
  1632.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  1633.     CX = starting volume
  1634.     DX = ending volume
  1635.     DI:SI = time
  1636. Return: nothing
  1637. SeeAlso: AX=6902h,AX=690Ah
  1638. --------s-18690A-----------------------------
  1639. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  1640.     AX = 690Ah
  1641.     BX = voice number (00h-1Fh)
  1642. Return: AX = current non-linear volume for voice
  1643. SeeAlso: AX=6902h,AX=6909h
  1644. --------s-18690B-----------------------------
  1645. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  1646.     AX = 690Bh
  1647.     BX = voice number
  1648. Return: BX:AX = 20-bit address at which voice is playing
  1649. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  1650. --------s-18690C-----------------------------
  1651. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  1652.     AX = 690Ch
  1653.     BL = data format (1 = twos-complement, 0 = not)
  1654.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  1655.     CX = number of bytes to get
  1656.     ES:SI -> buffer for retrieved data
  1657.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  1658. Return: nothing
  1659. SeeAlso: AX=6906h
  1660. --------s-18690D-----------------------------
  1661. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  1662.     AX = 690Dh
  1663.     BX = voice
  1664.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  1665.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  1666. Return: CX = balance value
  1667. SeeAlso: AX=6907h,AX=6908h
  1668. --------s-188000-----------------------------
  1669. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  1670.     AX = 8000h
  1671. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  1672.       INT 18h and then shells out to the program requiring its services
  1673. SeeAlso: AX=8001h,AX=8004h
  1674. --------s-188001-----------------------------
  1675. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  1676.     AX = 8001h
  1677.     BX:CX -> ASCIZ filename
  1678. SeeAlso: AX=8000h,AX=8002h
  1679. --------s-188002-----------------------------
  1680. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  1681.     AX = 8002h
  1682. SeeAlso: AX=8002h,AX=8003h
  1683. --------s-188003-----------------------------
  1684. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  1685.     AX = 8003h
  1686. --------s-188004-----------------------------
  1687. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  1688.     AX = 8004h
  1689. SeeAlso: AX=8000h,AX=8003h
  1690. --------B-19---------------------------------
  1691. INT 19 - SYSTEM - BOOTSTRAP LOADER
  1692. Desc:    This interrupt reboots the system without clearing memory or restoring
  1693.       interrupt vectors.  Because interrupt vectors are preserved, this
  1694.       interrupt usually causes a system hang if any TSRs have hooked
  1695.       vectors from 00h through 1Ch, particularly INT 08.
  1696. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  1697.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  1698.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  1699.       This sector should contain a master bootstrap loader and a partition
  1700.       table (see #0547).  After loading the master boot sector at
  1701.       0000h:7C00h, the master bootstrap loader is given control.  It will
  1702.       scan the partition table for an active partition, and will then load
  1703.       the operating system's bootstrap loader (contained in the first
  1704.       sector of the active partition) and give it control.
  1705.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  1706.       disk have a valid boot sector
  1707.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  1708.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  1709.       a reset, store 0000h at 0040h:0072h before jumping.
  1710.     VDISK.SYS hooks this interrupt to allow applications to find out how
  1711.       much extended memory has been used by VDISKs (see #0546).  DOS 3.3+
  1712.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  1713.       at the beginning of its INT 19 handler segment, thus causing some
  1714.       programs to overwrite extended memory which is already in use.
  1715.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  1716.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  1717.       contains extended partitions which point at each other in a loop,
  1718.       since it will never find the end of the linked list of extended
  1719.       partitions
  1720.     under Windows Real and Enhanced modes, calling INT 19 will hang the
  1721.       system in the same was as under bare DOS; under Windows Standard
  1722.       mode, INT 19 will successfully perform a cold reboot as it appears
  1723.       to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
  1724. BUG:    when loading the remainder of the DOS system files fails, various
  1725.       versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before
  1726.       calling INT 19, assuming that the boot sector had stored the
  1727.       contents of INT 1E at DS:SI instead of on the stack as it actually
  1728.       does
  1729. SeeAlso: INT 14/AH=17h,INT 18"BOOT HOOK",INT 49"Tandy 2000",INT 5B"PC Cluster"
  1730.  
  1731. Format of VDISK header block (at beginning of INT 19 handler's segment):
  1732. Offset    Size    Description    (Table 0546)
  1733.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  1734.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  1735.  1Dh 15 BYTEs    n/a
  1736.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  1737.  
  1738. Format of hard disk master boot sector:
  1739. Offset    Size    Description    (Table 0547)
  1740.  00h 446 BYTEs    Master bootstrap loader code
  1741. 1BEh 16 BYTEs    partition record for partition 1 (see #0548)
  1742. 1CEh 16 BYTEs    partition record for partition 2
  1743. 1DEh 16 BYTEs    partition record for partition 3
  1744. 1EEh 16 BYTEs    partition record for partition 4
  1745. 1FEh    WORD    signature, AA55h indicates valid boot block
  1746.  
  1747. Format of partition record:
  1748. Offset    Size    Description    (Table 0548)
  1749.  00h    BYTE    boot indicator (80h = active partition)
  1750.  01h    BYTE    partition start head
  1751.  02h    BYTE    partition start sector (bits 0-5)
  1752.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  1753.  04h    BYTE    operating system indicator (see #0549)
  1754.  05h    BYTE    partition end head
  1755.  06h    BYTE    partition end sector (bits 0-5)
  1756.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  1757.  08h    DWORD    sectors preceding partition
  1758.  0Ch    DWORD    length of partition in sectors
  1759. SeeAlso: #0547
  1760.  
  1761. (Table 0549)
  1762. Values for operating system indicator:
  1763.  00h    empty
  1764.  01h    DOS 12-bit FAT
  1765.  02h    XENIX root file system
  1766.  03h    XENIX /usr file system (obsolete)
  1767.  04h    DOS 16-bit FAT (up to 32M)
  1768.  05h    DOS 3.3+ extended partition
  1769.  06h    DOS 3.31+ Large File System (16-bit FAT, over 32M)
  1770.  07h    QNX
  1771.  07h    OS/2 HPFS
  1772.  07h    Windows NT NTFS
  1773.  07h    Advanced Unix
  1774.  08h    OS/2 (v1.0-1.3 only)
  1775.  08h    AIX bootable partition, SplitDrive
  1776.  08h    Commodore DOS
  1777.  08h    DELL partition spanning multiple drives
  1778.  09h    AIX data partition
  1779.  09h    Coherent filesystem
  1780.  0Ah    OS/2 Boot Manager
  1781.  0Ah    OPUS
  1782.  0Ah    Coherent swap partition
  1783.  0Bh    Windows 95 with 32-bit FAT
  1784.  0Ch    Windows 95 with 32-bit FAT (LBA mode)
  1785.  0Eh    reserved by Microsoft for logical-block-addressable VFAT
  1786.  0Fh    reserved by Microsoft for logical-block-addressable VFAT
  1787.  10h    OPUS
  1788.  11h    OS/2 Boot Manager hidden 12-bit FAT partition
  1789.  12h    Compaq Diagnostics partition
  1790.  14h    (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
  1791.  14h    OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
  1792.  16h    OS/2 Boot Manager hidden over-32M 16-bit FAT partition
  1793.  17h    OS/2 Boot Manager hidden HPFS partition
  1794.  18h    AST special Windows swap file
  1795.  21h    officially listed as reserved
  1796.  23h    officially listed as reserved
  1797.  24h    NEC MS-DOS 3.x
  1798.  26h    officially listed as reserved
  1799.  31h    officially listed as reserved
  1800.  33h    officially listed as reserved
  1801.  34h    officially listed as reserved
  1802.  36h    officially listed as reserved
  1803.  3Ch    PowerQuest PartitionMagic recovery partition
  1804.  40h    VENIX 80286
  1805.  41h    Personal RISC Boot
  1806.  42h    SFS (Secure File System) by Peter Gutmann
  1807.  50h    OnTrack Disk Manager, read-only partition
  1808.  51h    OnTrack Disk Manager, read/write partition
  1809.  51h    NOVEL
  1810.  52h    CP/M
  1811.  52h    Microport System V/386
  1812.  53h    OnTrack Disk Manager, write-only partition???
  1813.  54h    OnTrack Disk Manager (DDO)
  1814.  56h    GoldenBow VFeature
  1815.  61h    SpeedStor
  1816.  63h    Unix SysV/386, 386/ix
  1817.  63h    Mach, MtXinu BSD 4.3 on Mach
  1818.  63h    GNU HURD
  1819.  64h    Novell NetWare 286
  1820.  65h    Novell NetWare (3.11)
  1821.  67h    Novell
  1822.  68h    Novell
  1823.  69h    Novell
  1824.  70h    DiskSecure Multi-Boot
  1825.  71h    officially listed as reserved
  1826.  73h    officially listed as reserved
  1827.  74h    officially listed as reserved
  1828.  75h    PC/IX
  1829.  76h    officially listed as reserved
  1830.  80h    Minix v1.1 - 1.4a
  1831.  81h    Minix v1.4b+
  1832.  81h    Linux
  1833.  81h    Mitac Advanced Disk Manager
  1834.  82h    Linux Swap partition
  1835.  82h    Prime
  1836.  83h    Linux native file system (ext2fs/xiafs)
  1837.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  1838.  86h    officially listed as reserved
  1839.  87h    HPFS Fault-Tolerant mirrored partition
  1840.  93h    Amoeba file system
  1841.  94h    Amoeba bad block table
  1842.  A1h    officially listed as reserved
  1843.  A3h    officially listed as reserved
  1844.  A4h    officially listed as reserved
  1845.  A5h    FreeBSD, BSD/386
  1846.  A6h    officially listed as reserved
  1847.  B1h    officially listed as reserved
  1848.  B3h    officially listed as reserved
  1849.  B4h    officially listed as reserved
  1850.  B6h    officially listed as reserved
  1851.  B7h    BSDI file system (secondarily swap)
  1852.  B8h    BSDI swap partition (secondarily file system)
  1853.  C1h    DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  1854.  C4h    DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  1855.  C6h    DR DOS 6.0 LOGIN.EXE-secured Huge partition
  1856.  C7h    Syrinx Boot
  1857.  D8h    CP/M-86
  1858.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  1859.  DBh    CTOS (Convergent Technologies OS)
  1860.  E1h    SpeedStor 12-bit FAT extended partition
  1861.  E3h    DOS read-only
  1862.  E3h    Storage Dimensions
  1863.  E4h    SpeedStor 16-bit FAT extended partition
  1864.  E5h    officially listed as reserved
  1865.  E6h    officially listed as reserved
  1866.  F1h    Storage Dimensions
  1867.  F2h    DOS 3.3+ secondary partition
  1868.  F3h    officially listed as reserved
  1869.  F4h    SpeedStor
  1870.  F4h    Storage Dimensions
  1871.  F6h    officially listed as reserved
  1872.  FEh    LANstep
  1873.  FEh    IBM PS/2 IML
  1874.  FFh    Xenix bad block table
  1875. Note:    for partition type 07h, one should inspect the partition boot record
  1876.       for the actual file system type
  1877. SeeAlso: #0548
  1878. --------B-1A00-------------------------------
  1879. INT 1A - TIME - GET SYSTEM TIME
  1880.     AH = 00h
  1881. Return: CX:DX = number of clock ticks since midnight
  1882.     AL = midnight flag, nonzero if midnight passed since time last read
  1883. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  1884.       (except on Tandy 2000, where the clock runs at 20 ticks per second)
  1885.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  1886.       it, leading to loss of a day if two consecutive midnights pass
  1887.       without a request for the time (e.g. if the system is on but idle)
  1888.     since the midnight flag is cleared, if an application calls this
  1889.       function after midnight before DOS does, DOS will not receive the
  1890.       midnight flag and will fail to advance the date
  1891. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 55"Tandy 2000",INT 4E/AH=02h"TI"
  1892. SeeAlso: INT 62/AX=0099h,MEM 0040h:006Ch
  1893. --------B-1A01-------------------------------
  1894. INT 1A - TIME - SET SYSTEM TIME
  1895.     AH = 01h
  1896.     CX:DX = number of clock ticks since midnight
  1897. Return: nothing
  1898. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  1899.       (except on Tandy 2000, where the clock runs at 20 ticks per second)
  1900.     this call resets the midnight-passed flag
  1901. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  1902. --------B-1A02-------------------------------
  1903. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  1904.     AH = 02h
  1905. Return: CF clear if successful
  1906.         CH = hour (BCD)
  1907.         CL = minutes (BCD)
  1908.         DH = seconds (BCD)
  1909.         DL = daylight savings flag (00h standard time, 01h daylight time)
  1910.     CF set on error (i.e. clock not running or in middle of update)
  1911. Note:    this function is also supported by the Sperry PC, which predates the
  1912.       IBM AT; the data is returned in binary rather than BCD on the Sperry,
  1913.       and DL is always 00h
  1914. SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch
  1915. --------b-1A02-------------------------------
  1916. INT 1A - Tandy 2000 - TIME - GET DATE AND TIME
  1917.     AH = 02h
  1918. Return: BX = number of days since January 1, 1980
  1919.     CH = hours
  1920.     CL = minutes
  1921.     DH = seconds
  1922.     DL = hundredths
  1923. SeeAlso: AH=03h"Tandy 2000",INT 55"Tandy 2000"
  1924. --------B-1A03-------------------------------
  1925. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  1926.     AH = 03h
  1927.     CH = hour (BCD)
  1928.     CL = minutes (BCD)
  1929.     DH = seconds (BCD)
  1930.     DL = daylight savings flag (00h standard time, 01h daylight time)
  1931. Return: nothing
  1932. Note:    this function is also supported by the Sperry PC, which predates the
  1933.       IBM AT; the data is specified in binary rather than BCD on the
  1934.       Sperry, and the value of DL is ignored
  1935. SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh,INT 4B/AH=01h
  1936. --------b-1A03-------------------------------
  1937. INT 1A - Tandy 2000 - TIME - SET DATE AND TIME
  1938.     AH = 03h
  1939.     BX = number of days since January 1, 1980
  1940.     CH = hours
  1941.     CL = minutes
  1942.     DH = seconds
  1943.     DL = hundredths
  1944. Return: nothing
  1945. SeeAlso: AH=02h"Tandy 2000",INT 55"Tandy 2000"
  1946. --------B-1A04-------------------------------
  1947. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  1948.     AH = 04h
  1949. Return: CF clear if successful
  1950.         CH = century (BCD)
  1951.         CL = year (BCD)
  1952.         DH = month (BCD)
  1953.         DL = day (BCD)
  1954.     CF set on error
  1955. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah,INT 4B/AH=02h"TI"
  1956. --------b-1A04-------------------------------
  1957. INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE
  1958.     AH = 04h
  1959. Return: CF clear if successful
  1960.         CL = year-1980
  1961.         DH = month (binary) (01h-0Ch)
  1962.         DL = day (binary) (01h-1Fh)
  1963.     CF set on error
  1964. SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah,INT 4B/AH=02h"TI"
  1965. --------B-1A05-------------------------------
  1966. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  1967.     AH = 05h
  1968.     CH = century (BCD)
  1969.     CL = year (BCD)
  1970.     DH = month (BCD)
  1971.     DL = day (BCD)
  1972. Return: nothing
  1973. SeeAlso: AH=04h,INT 21/AH=2Bh"DATE",INT 4B/AH=00h"TI"
  1974. --------b-1A05-------------------------------
  1975. INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE
  1976.     AH = 05h
  1977.     CL = year-1980
  1978.     CH = 00h (???)
  1979.     DH = month (binary) (01h-0Ch)
  1980.     DL = day (binary) (01h-1Fh)
  1981. Return: nothing
  1982. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh"DATE"
  1983. --------B-1A06-------------------------------
  1984. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  1985.     AH = 06h
  1986.     CH = hour (BCD)
  1987.     CL = minutes (BCD)
  1988.     DH = seconds (BCD)
  1989. Return: CF set on error (alarm already set or clock stopped for update)
  1990.     CF clear if successful
  1991. Notes:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  1992.       time
  1993.     the BIOS does not check for invalid values for the time, so the CMOS
  1994.       clock chip's "don't care" setting (any values between C0h and FFh)
  1995.       may be used for any or all three part.  For example, to create an
  1996.       alarm once a minute, every minute, call with CH=C0h, CL=C0h, and
  1997.       DH=00h.
  1998. SeeAlso: AH=07h,INT 4A"SYSTEM"
  1999. --------B-1A07-------------------------------
  2000. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  2001.     AH = 07h
  2002. Return: alarm disabled
  2003. Note:    does not disable the real-time clock's IRQ
  2004. SeeAlso: AH=06h,INT 70
  2005. --------B-1A08-------------------------------
  2006. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  2007.     AH = 08h
  2008.     CH = hours in BCD
  2009.     CL = minutes in BCD
  2010.     DH = seconds in BCD
  2011. SeeAlso: AH=09h
  2012. --------B-1A09-------------------------------
  2013. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  2014.     AH = 09h
  2015. Return: CH = hours in BCD
  2016.     CL = minutes in BCD
  2017.     DH = seconds in BCD
  2018.     DL = alarm status
  2019.         00h alarm not enabled
  2020.         01h alarm enabled but will not power up system
  2021.         02h alarm will power up system
  2022. SeeAlso: AH=08h
  2023. --------B-1A0A-------------------------------
  2024. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  2025.     AH = 0Ah
  2026. Return: CF set on error
  2027.     CF clear if successful
  2028.         CX = count of days since Jan 1,1980
  2029. SeeAlso: AH=04h,AH=0Bh
  2030. --------B-1A0B-------------------------------
  2031. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  2032.     AH = 0Bh
  2033.     CX = count of days since Jan 1,1980
  2034. Return: CF set on error
  2035.     CF clear if successful
  2036. SeeAlso: AH=05h,AH=0Ah
  2037. --------J-1A10-------------------------------
  2038. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  2039.     AH = 10h
  2040.     ???
  2041. Return: ???
  2042. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  2043. --------J-1A1000-----------------------------
  2044. INT 1A - NEC PC-9800 series - INSTALLATION CHECK
  2045.     AX = 1000h
  2046. Return: AX <> 1000h if NEC
  2047. --------J-1A11-------------------------------
  2048. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  2049.     AH = 11h
  2050.     ???
  2051. Return: ???
  2052. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  2053. --------J-1A12-------------------------------
  2054. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  2055.     AH = 12h
  2056.     ???
  2057. Return: ???
  2058. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  2059. --------A-1A3601-----------------------------
  2060. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  2061.     AX = 3601h
  2062. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  2063.         ASCIZ string "WPCORP\0"
  2064. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  2065.       third party product wants to interface with it.  The third party
  2066.       product must intercept this interrupt and return the address of a
  2067.       keyboard monitor routine.
  2068.     Before checking for keyboard input, and after every key entered by the
  2069.       user, Word Perfect will call the routine whose address was provided
  2070.       in DS:SI with the following parameters:
  2071.         Entry:    AX = key code or 0
  2072.             BX = WordPerfect state flag
  2073.         Exit:    AX = 0 or key code
  2074.             BX = 0 or segment address of buffer with key codes
  2075.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  2076. SeeAlso: INT 16/AX=5500h
  2077. --------N-1A6108-----------------------------
  2078. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  2079.     AX = 6108h
  2080.     STACK:    WORD    conversation ID (0000h-0009h)
  2081.         DWORD    pointer to message buffer
  2082.         WORD    length of message
  2083.         DWORD    pointer to reply buffer
  2084.         WORD    length of reply buffer
  2085.         WORD    0000h (use default "Cparams" structure)
  2086. Return: AX = status (see #0550)
  2087.     STACK unchanged
  2088. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2089.       which implements the Simple Network Application Protocol
  2090. SeeAlso: AX=6205h
  2091.  
  2092. (Table 0550)
  2093. Values for SNAP.EXE status:
  2094.  0000h    successful
  2095.  F830h    "SNAP_ABORTED"
  2096.  FC04h    "SNAP_SERVERDIED"
  2097.  FC05h    "SNAP_RESEND"
  2098.  FC06h    "SNAP_SELECTFAILED"
  2099.  FC07h    "SNAP_WRONGVERSION"
  2100.  FC08h    "SNAP_INVALIDACK"
  2101.  FC09h    "SNAP_TIMEOUT"
  2102.  FC0Ah    "SNAP_SERVERREJECT"
  2103.  FC0Bh    "SNAP_NOREPLYDUE"
  2104.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  2105.  FC0Dh    "SNAP_NOINIT"
  2106.  FC0Eh    "SNAP_SOCKETERROR"
  2107.  FC0Fh    "SNAP_BUFFERLIMIT"
  2108.  FC10h    "SNAP_INVALIDCID"
  2109.  FC11h    "SNAP_INVALIDOP"
  2110.  FC12h    "SNAP_XMITFAIL"
  2111.  FC13h    "SNAP_NOMORERETRIES"
  2112.  FC14h    "SNAP_BADPARMS"
  2113.  FC15h    "SNAP_NOMEMORY"
  2114.  FC16h    "SNAP_NOMORECONVS"
  2115.  FFFFh    failed (invalid function/parameter)
  2116. --------N-1A6205-----------------------------
  2117. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  2118.     AX = 6205h
  2119.     STACK:    WORD    conversation ID (0000h-0009h)
  2120.         DWORD    pointer to message
  2121.         WORD    length of message
  2122.         WORD    0000h (use default "Cparms" structure)
  2123. Return: AX = status (see #0550)
  2124.     STACK unchanged
  2125. SeeAlso: AX=6108h
  2126. --------N-1A6308-----------------------------
  2127. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  2128.     AX = 6308h
  2129.     STACK:    WORD    offset of ASCIZ "guardian"
  2130.         WORD    offset of ASCIZ hostname
  2131.         WORD    offset of ASCIZ server name
  2132.         WORD    offset of ASCIZ userid
  2133.         WORD    offset of ASCIZ password
  2134.         WORD    offset of password length
  2135.         WORD    offset of password type
  2136.         WORD    offset of "Cparms" structure (see #0551)
  2137. Return: ???
  2138.     STACK unchanged
  2139. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  2140.       to allocate a buffer)
  2141. SeeAlso: AX=6405h,AX=7202h
  2142.  
  2143. Format of SNAP.EXE Cparms structure:
  2144. Offset    Size    Description    (Table 0551)
  2145.  00h    WORD    retry delay in seconds
  2146.  02h    WORD    timeout delay in seconds
  2147.  04h    WORD    maximum buffer size
  2148.  06h    WORD    encryption level
  2149. --------N-1A6405-----------------------------
  2150. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  2151.     AX = 6405h
  2152.     STACK:    WORD    conversation ID (0000h-0009h)
  2153.         DWORD    pointer to message buffer
  2154.         WORD    length of message
  2155.         WORD    0000h (use default "Cparms" structure)
  2156. Return: AX = status (see #0550)
  2157.     STACK unchanged
  2158. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2159.       which implements the Simple Network Application Protocol
  2160. SeeAlso: AX=6308h
  2161. --------N-1A6900-----------------------------
  2162. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  2163.     AX = 6900h
  2164. Return: AX = value used for DS by resident code
  2165. SeeAlso: AX=6A01h,AX=6F01h
  2166. --------N-1A6A01-----------------------------
  2167. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  2168.     AX = 6A01h
  2169.     STACK:    WORD    number of bytes to allocate
  2170. Return: AX = offset of allocated buffer or 0000h if out of memory
  2171.     STACK unchanged
  2172. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2173.       which implements the Simple Network Application Protocol
  2174. SeeAlso: AX=6B01h
  2175. --------N-1A6B01-----------------------------
  2176. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  2177.     AX = 6B01h
  2178.     STACK:    WORD    offset within SNAP data segment of previously allocated
  2179.             buffer
  2180. Return: STACK unchanged
  2181. Note:    this call is a NOP if the specified offset is 0000h
  2182. SeeAlso: AX=6A01h
  2183. --------N-1A6C04-----------------------------
  2184. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  2185.     AX = 6C04h
  2186.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  2187.         WORD    segment of source buffer
  2188.         WORD    offset of source buffer
  2189.         WORD    number of bytes to copy
  2190. Return: AX = offset of byte after last one copied to destination
  2191.     STACK unchanged
  2192. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2193.       which implements the Simple Network Application Protocol
  2194. SeeAlso: AX=6D04h
  2195. --------N-1A6D04-----------------------------
  2196. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  2197.     AX = 6D04h
  2198.     STACK:    WORD    offset within SNAP data segment of source buffer
  2199.         WORD    segment of destination buffer
  2200.         WORD    offset of destination buffer
  2201.         WORD    number of bytes to copy
  2202. Return: AX = offset of byte after last one copied from source
  2203.     buffer filled
  2204.     STACK unchanged
  2205. SeeAlso: AX=6C04h
  2206. --------N-1A6E01-----------------------------
  2207. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  2208.     AX = 6E01h
  2209.     STACK:    WORD    new value for ???
  2210. Return: AX = old value of ???
  2211.     STACK unchanged
  2212. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2213.       which implements the Simple Network Application Protocol
  2214. --------N-1A6F01-----------------------------
  2215. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  2216.     AX = 6F01h
  2217.     STACK: WORD 0000h
  2218. Return: AX = status
  2219.         0000h SNAP is resident
  2220.         other SNAP not present
  2221.     STACK unchanged
  2222. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2223.       which implements the Simple Network Application Protocol, and is
  2224.       required by PCVENUS (a network shell).  The combination of SNAP and
  2225.       PCVENUS allows the use of the Andrew File System as one or more
  2226.       networked drives.
  2227. SeeAlso: AX=6900h,AX=7400h
  2228. --------N-1A7002-----------------------------
  2229. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  2230.     AX = 7002h
  2231.     STACK:    WORD    anchor number (0000h-0009h)
  2232.         WORD    new value for the anchor
  2233. Return: AX = status
  2234.         0000h successful
  2235.         FFFFh failed (top word on stack not in range 00h-09h)
  2236.     STACK unchanged
  2237. SeeAlso: AX=7101h
  2238. --------N-1A7101-----------------------------
  2239. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  2240.     AX = 7101h
  2241.     STACK:    WORD    anchor number (0000h-0009h)
  2242. Return: AX = anchor's value
  2243.     STACK unchanged
  2244. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2245.       which implements the Simple Network Application Protocol
  2246. SeeAlso: AX=7002h
  2247. --------N-1A7202-----------------------------
  2248. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  2249.     AX = 7202h
  2250.     STACK:    WORD    conversation ID (0000h-0009h)
  2251.         WORD    offset within resident data segment of "Cparms"
  2252.               structure (see #0551)
  2253. Return: AX = status???
  2254.     STACK unchanged
  2255. SeeAlso: AX=6308h
  2256. --------N-1A7302-----------------------------
  2257. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  2258.     AX = 7302h
  2259.     STACK:    WORD    conversation ID (0000h-0009h)
  2260.         WORD    offset within resident data segment of ???
  2261. Return: AX = ???
  2262.     ???
  2263.     STACK unchanged
  2264. SeeAlso: AX=7400h
  2265. --------N-1A7400-----------------------------
  2266. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  2267.     AX = 7400h
  2268. Return: AX = version (AH=major, AL=minor)
  2269. Note:    this call is only valid if SNAP is installed
  2270. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  2271. --------N-1A75-------------------------------
  2272. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  2273.     AH = 75h
  2274.     AL = ???
  2275. Return: AX = ??? (0000h)
  2276. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2277.       which implements the Simple Network Application Protocol
  2278. --------N-1A76-------------------------------
  2279. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  2280.     AH = 76h
  2281.     AL = ???
  2282. Return: AX = ???
  2283. --------N-1A77-------------------------------
  2284. INT 1A - SNAP.EXE 3.4 - ???
  2285.     AH = 77h
  2286.     AL = ??? (at least 01h)
  2287.     STACK:    WORD    ???
  2288.         ???
  2289. Return: ???
  2290.     STACK unchanged
  2291. --------N-1A7802-----------------------------
  2292. INT 1A - SNAP.EXE 3.4 - ???
  2293.     AX = 7802h
  2294.     STACK:    WORD    ???
  2295.         WORD    ???
  2296. Return: ???
  2297.     STACK unchanged
  2298. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  2299.       which implements the Simple Network Application Protocol
  2300. --------s-1A7F-------------------------------
  2301. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  2302.     AH = 7Fh
  2303.     ???
  2304. Return: ???
  2305. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  2306. SeeAlso: AH=80h,AH=83h,AH=85h
  2307. --------s-1A80-------------------------------
  2308. INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
  2309.     AH = 80h
  2310.     AL = 00h source is 8253 channel 2
  2311.          01h source is cassette input
  2312.          02h source is I/O channel "Audio IN"
  2313.          03h source is sound generator chip
  2314. Note:    although documented in the 1000TL Technical Reference, the 1000TL
  2315.       BIOS has just an IRET for this call
  2316. SeeAlso: AH=7Fh,AH=83h
  2317. --------X-1A80-------------------------------
  2318. INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
  2319.     AH = 80h
  2320. Return: CF clear if successful
  2321.         CX = 5353h ('SS') if Socket Services installed
  2322.         AL = number of adapters present (0-16)
  2323.         AH destroyed
  2324.     CF set on error
  2325.         AH = error code (see #0552)
  2326. SeeAlso: AH=83h"PCMCIA"
  2327.  
  2328. (Table 0552)
  2329. Values for PCMCIA error codes:
  2330.  01h    "BAD_ADAPTER" nonexistent adapter
  2331.  02h    "BAD_ATTRIBUTE" invalid attribute specified
  2332.  03h    "BAD_BASE" invalid system memory base address
  2333.  04h    "BAD_EDC" invalid EDC generator specified
  2334.  05h    "BAD_INDICATOR" invalid indicator specified
  2335.  06h    "BAD_IRQ" invalid IRQ channel specified
  2336.  07h    "BAD_OFFSET" invalid PCMCIA card offset specified
  2337.  08h    "BAD_PAGE" invalid page specified
  2338.  09h    "BAD_READ" unable to complete request
  2339.  0Ah    "BAD_SIZE" invalid window size specified
  2340.  0Bh    "BAD_SOCKET" nonexistent socket specified
  2341.  0Ch    "BAD_TECHNOLOGY" unsupported Card Technology for writes
  2342.  0Dh    "BAD_TYPE" unavailable window type specified
  2343.  0Eh    "BAD_VCC" invalid Vcc power level index specified
  2344.  0Fh    "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
  2345.  10h    "BAD_WAIT" invalid number of wait states specified
  2346.  11h    "BAD_WINDOW" nonexistent window specified
  2347.  12h    "BAD_WRITE" unable to complete request
  2348.  13h    "NO_ADAPTERS" no adapters installed, but Socket Services is present
  2349.  14h    "NO_CARD" no card in socket
  2350.  15h    function not supported
  2351.  16h    invalid mode
  2352.  17h    invalid speed
  2353.  18h    busy
  2354. --------X-1A81-------------------------------
  2355. INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
  2356.     AH = 81h
  2357.     DS:DX -> callback routine (see #0553) or 0000h:0000h to disable
  2358. Return: CF clear if successful
  2359.         AH destroyed
  2360.     CF set on error
  2361.         AH = error code (see #0552)
  2362. Note:    the callback will be invoked on any socket changes whose notification
  2363.       has not been disabled with the status change enable mask; it may be
  2364.       invoked either while processing a hardware interrupt from the adapter
  2365.       or while processing the following Socket Services request
  2366. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  2367.  
  2368. (Table 0553)
  2369. Values PCMCIA callback routine is invoked with:
  2370.     AL = adapter number
  2371.     BH = status change interrupt enable mask (see #0554)
  2372.     BL = socket number
  2373.     DH = current socket status (see #0555)
  2374.     DL = current card status (see #0556)
  2375. Return: all registers preserved
  2376. Notes:    the callback may be invoked during a hardware interrupt, and may not
  2377.       call on Socket Services
  2378.     the callback will be invoked once for each socket with a status change
  2379.  
  2380. Bitfields for PCMCIA status change interrupt enable mask:
  2381. Bit(s)    Description    (Table 0554)
  2382.  7    card detect change
  2383.  6    ready change
  2384.  5    battery warning change
  2385.  4    battery dead change
  2386.  3    insertion request
  2387.  2    ejection request
  2388.  1-0    reserved (0)
  2389.  
  2390. Bitfields for PCMCIA current socket status:
  2391. Bit(s)    Description    (Table 0555)
  2392.  7    card changed
  2393.  6    reserved (0)
  2394.  5    card insertion complete
  2395.  4    card ejection complete
  2396.  3    card insertion request pending
  2397.  2    card ejection request pending
  2398.  1    card locked
  2399.  0    reserved (0)
  2400.  
  2401. Bitfields for PCMCIA current card status:
  2402. Bit(s)    Description    (Table 0556)
  2403.  7    card detect
  2404.  6    ready
  2405.  5    battery voltage detect 2 (battery warning)
  2406.  4    battery voltage detect 1 (battery dead)
  2407.  3-1    reserved (0)
  2408.  0    write protected
  2409. --------s-1A8100-----------------------------
  2410. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  2411.     AX = 8100h
  2412. Return: AL > 80h if supported
  2413.     AX = 00C4h if supported (1000SL/TL)
  2414.         CF set if sound chip is busy
  2415.         CF clear  if sound chip is free
  2416. Note:    the value of CF is not definitive; call this function until CF is
  2417.       clear on return, then call AH=84h"Tandy"
  2418. --------s-1A82-------------------------------
  2419. INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
  2420.     AH = 82h
  2421.     ES:BX -> buffer for sound samples
  2422.     CX = length of buffer
  2423.     DX = transfer rate (1-4095, 1 is fastest)
  2424. Return: AH = 00h
  2425.     CF set if sound busy
  2426.     CF clear if sound chip free
  2427. Note:    the value in DX should be 1/10 the corresponding value for
  2428.       INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL.  Call
  2429.       INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
  2430.     The BIOS issues an INT 15/AX=91FBh when the input is complete
  2431.     DMA across a 64K boundary is masked by the BIOS
  2432. --------X-1A82-------------------------------
  2433. INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
  2434.     AH = 82h
  2435.     DS:DX -> callback routine (see #0557) or 0000h:0000h
  2436. Return: CF clear if successful
  2437.         AH destroyed
  2438.     CF set on error
  2439.         AH = error code (see #0552)
  2440. Note:    the callback is invoked on a Write Multiple request with an unsupported
  2441.       card technology type
  2442. SeeAlso: AH=81h"PCMCIA",AH=94h
  2443.  
  2444. (Table 0557)
  2445. Values PCMCIA callback routine is invoked with:
  2446.     ES:AX -> Low-Level Socket Services Routines (see #0559)
  2447.     BH = socket attributes (see #0558)
  2448.     CX = number of bytes or words to write
  2449.     DS:SI -> data buffer to be written
  2450.     DX:DI -> 26-bit linear card address
  2451.     BP = card technology type
  2452. Return: CF clear if successful
  2453.     CF set on error
  2454.         AH = error code (07h,0Ch,12h,14h) (see #0552)
  2455.  
  2456. Bitfields for PCMCIA socket attributes:
  2457. Bit(s)    Description    (Table 0558)
  2458.  7-4    reserved (0)
  2459.  3    packed buffer
  2460.  2    even bytes only (only valid if 1 set)
  2461.  1    data width (clear = byte, set = word)
  2462.  0    memory type (clear = common, set = attribute)
  2463.  
  2464. Format of PCMCIA Low-Level Socket Services Routines:
  2465. Offset    Size    Description    (Table 0559)
  2466.  00h    WORD    offset of Write Many routine (see #0560)
  2467.  02h    WORD    offset of Write One routine (see #0561)
  2468.  04h    WORD    offset of Read One routine (see #0562)
  2469.  06h    WORD    offset of Increment Offset routine (see #0563)
  2470.  08h    WORD    offset of Set Offset routine (see #0564)
  2471.  0Ah    WORD    offset of Get Status routine (see #0565)
  2472.  
  2473. (Table 0560)
  2474. Call Write Many routine with:
  2475.     BH = socket attributes (see #0558)
  2476.     CX = number of bytes or words to write
  2477.     DS:SI -> data to be written
  2478. Return: CF clear if successful
  2479.     CF set on error
  2480.  
  2481. (Table 0561)
  2482. Call Write One routine with:
  2483.     AL/AX = data to be written
  2484.     BH = socket attributes (see #0558)
  2485. Return: CF clear if successful
  2486.     CF set on error
  2487.  
  2488. (Table 0562)
  2489. Call Read One routine with:
  2490.     BH = socket attributes (see #0558)
  2491. Return: CF clear if successful
  2492.         AL/AX = data read
  2493.     CF set on error
  2494.  
  2495. (Table 0563)
  2496. Call Increment Offset routine with:
  2497.     BH = socket attributes (see #0558)
  2498. Return: CF clear if successful
  2499.     CF set on error
  2500.  
  2501. (Table 0564)
  2502. Call Set Offset routine with:
  2503.     DX:DI = new offset address
  2504. Return: CF clear if successful
  2505.     CF set on error
  2506.  
  2507. (Table 0565)
  2508. Call Get Status routine with:
  2509.     nothing
  2510. Return: AL = current card status (see #0556)
  2511. --------s-1A83-------------------------------
  2512. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  2513.     AH = 83h
  2514.     AL = volume (0=silence, 7=highest)
  2515.     CX = number of bytes to play
  2516.     DX = time between sound samples (multiples of 273 nanoseconds)
  2517.         only bits 11-0 used
  2518.     ES:BX -> sound data (array of 8-bit unsigned PCM samples)
  2519. Return: AH = 00h
  2520.     CF set if sound is busy
  2521.     CF clear if sound chip is free
  2522. Notes:    this call returns immediately while the sound plays in the
  2523.       background; the sound chip is clocked at 3.57 MHz, with the low 12
  2524.       bits of DX specifying the clock divisor
  2525.     The BIOS appears to call INT 15/AX=91FBh when the sound device
  2526.       underflows to allow another INT 1A/AH=83h for seamless playing of
  2527.       long sounds.
  2528. SeeAlso: AH=84h"Tandy",INT 15/AH=91h
  2529. --------X-1A83-------------------------------
  2530. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
  2531.     AH = 83h
  2532.     AL = adapter number
  2533. Return: CF clear if successful
  2534.         AX = Socket Services version (BCD)
  2535.         BX = implementation version (BCD)
  2536.         CX = 5353h ("SS")
  2537.         DS:SI -> ASCIZ implementor description
  2538.     CF set on error
  2539.         AH = error code (01h) (see #0552)
  2540. Note:    the current version (from the Revision A.00 documentation) of Socket
  2541.       Services is 1.00 (AX=0100h)
  2542. SeeAlso: AH=80h"PCMCIA"
  2543. --------s-1A84-------------------------------
  2544. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  2545.     AH = 84h
  2546. Return: ???
  2547. Note:    the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
  2548. SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
  2549. --------X-1A84-------------------------------
  2550. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
  2551.     AH = 84h
  2552.     AL = adapter number
  2553. Return: CF clear if successful
  2554.         AH destroyed
  2555.         BH = number of windows
  2556.         BL = number of sockets (1-16)
  2557.         CX = number of EDCs
  2558.         DH = capabilities (see #0566)
  2559.         DL = status change interrupt used (only if DH bit 3 set)(see #0567)
  2560.     CF set on error
  2561.         AH = error code (01h) (see #0552)
  2562. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  2563.  
  2564. Bitfields for PCMCIA capabilities:
  2565. Bit(s)    Description    (Table 0566)
  2566.  7-6    reserved (0)
  2567.  5    status change interrupt is hardware shareable
  2568.  4    status change interrupt is software shareable
  2569.  3    status change interrupt
  2570.  2    data bus width is per-socket rather than per-window
  2571.  1    power management is per-adapter rather than per-socket
  2572.  0    indicators are per-adapter rather than per-socket
  2573.  
  2574. (Table 0567)
  2575. Values for PCMCIA status change interrupt usage:
  2576.  00h-0Fh IRQ level
  2577.  10h    NMI
  2578.  11h    I/O check
  2579.  12h    bus error
  2580.  13h    vendor specific
  2581.  14h-FFh reserved
  2582. --------s-1A85-------------------------------
  2583. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  2584.     AH = 85h
  2585.     ???
  2586. Return: ???
  2587. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  2588. SeeAlso: AH=7Fh,AH=83h"Tandy"
  2589. --------X-1A85-------------------------------
  2590. INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
  2591.     AH = 85h
  2592.     AL = adapter number
  2593. Return: CF clear if successful
  2594.         AH destroyed
  2595.         DH = adapter attributes (see #0568)
  2596.     CF set on error
  2597.         AH = error code (01h) (see #0552)
  2598. SeeAlso: AH=84h"PCMCIA",AH=86h
  2599.  
  2600. Bitfields for PCMCIA adapter attributes:
  2601. Bit(s)    Description    (Table 0568)
  2602.  7-5    reserved (0)
  2603.  4    hardware share status change
  2604.  3    software share status change
  2605.  2    enable status change interrupts
  2606.  1    adapter preserves state information during reduced power consumption
  2607.  0    attempting to reduce power consumption
  2608. --------X-1A86-------------------------------
  2609. INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
  2610.     AH = 86h
  2611.     AL = adapter number
  2612.     DH = new adapter attributes (see #0568)
  2613. Return: CF clear if successful
  2614.         AH destroyed
  2615.     CF set on error
  2616.         AH = error code (01h) (see #0552)
  2617. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  2618. --------X-1A87-------------------------------
  2619. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
  2620.     AH = 87h
  2621.     AL = adapter number
  2622.     BH = window number
  2623. Return: CF clear if successful
  2624.         AH destroyed
  2625.         BL = capabilities (see #0569)
  2626.         CX = bitmap of assignable sockets
  2627.         DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
  2628.         DL = supported access speeds (see #0570)
  2629.         DS:SI -> Memory Window Characteristics table (see #0571)
  2630.         DS:DI -> I/O Window Characteristics table (see #0572)
  2631.     CF set on error
  2632.         AH = error code (01h,11h) (see #0552)
  2633. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  2634.  
  2635. Bitfields for PCMCIA window capabilities:
  2636. Bit(s)    Description    (Table 0569)
  2637.  7-5    reserved (0)
  2638.  4    separate enable for EISA comon space
  2639.  3    EISA I/O mappable
  2640.  2    I/O space
  2641.  1    attribute memory
  2642.  0    common memory
  2643.  
  2644. Bitfields for PCMCIA supported access speeds:
  2645. Bit(s)    Description    (Table 0570)
  2646.  7    reserved (0)
  2647.  6    600 ns
  2648.  5    300 ns
  2649.  4    250 ns
  2650.  3    200 ns
  2651.  2    150 ns
  2652.  1    100 ns
  2653.  0    WAIT line monitoring
  2654.  
  2655. Format of PCMCIA Memory Window Characteristics table:
  2656. Offset    Size    Description    (Table 0571)
  2657.  00h    WORD    window capabilities (see #0573)
  2658.  02h    WORD    minimum base address in 4K pages
  2659.  04h    WORD    maximum base address in 4K pages
  2660.  06h    WORD    minimum window size in 4K pages
  2661.  08h    WORD    maximum window size in 4K pages
  2662.  0Ah    WORD    window size granularity (4K units)
  2663.  0Ch    WORD    required base address alignment (4K units)
  2664.  0Eh    WORD    required card offset alignment (4K units)
  2665.  
  2666. Format of PCMCIA I/O Window Characteristics table:
  2667. Offset    Size    Description    (Table 0572)
  2668.  00h    WORD    window capabilities (see #0573)
  2669.  02h    WORD    minimum base address in bytes
  2670.  04h    WORD    maximum base address in bytes
  2671.  06h    WORD    minimum window size in bytes
  2672.  08h    WORD    maximum window size in bytes
  2673.  0Ah    WORD    window size granularity (bytes)
  2674.  
  2675. Bitfields for PCMCIA window capabilities:
  2676. Bit(s)    Description    (Table 0573)
  2677.  0    programmable base address
  2678.  1    programmable window size
  2679.  2    window disable/enable supported
  2680.  3    8-data bus
  2681.  4    16-data bus
  2682.  5    base address alignment on size boundary required
  2683.  6    power-of-two size granularity
  2684. ---memory windows---
  2685.  7    card offset must be aligned on size boundary
  2686.  8    paging hardware available
  2687.  9    paging hardware shared
  2688.  10    page disable/enable supported
  2689.  11-15    reserved (0)
  2690. ---I/O windows---
  2691.  7-15    reserved (0)
  2692. --------X-1A88-------------------------------
  2693. INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
  2694.     AH = 88h
  2695.     AL = adapter number
  2696.     BH = window number
  2697. Return: CF clear if successful
  2698.         AH destroyed
  2699.         BL = socket number (0-16) (0 = not assigned)
  2700.         CX = window size (bytes for I/O window, 4K units for memory window)
  2701.         DH = window attributes (see #0574)
  2702.         DL = access speed (only one bit set) (see #0570)
  2703.         SI = window base address (bytes if I/O, 4K units if memory)
  2704.         DI = card offset address (memory only, 4K units)
  2705.     CF set on error
  2706.         AH = error code (01h,11h) (see #0552)
  2707. SeeAlso: AH=87h,AH=89h,AH=8Ah
  2708.  
  2709. Bitfields for PCMCIA window attributes:
  2710. Bit(s)    Description    (Table 0574)
  2711.  0    memory-mapped rather than I/O-mapped
  2712.  1    attribute memory rather than common (memory-mapped)
  2713.     EISA mapped (I/O)
  2714.  2    enabled
  2715.  3    16-data path
  2716.  4    subdivided into pages (memory-mapped only)
  2717.  5    non-specific access slot enable (EISA-mapped only)
  2718.  6-7    reserved (0)
  2719. --------X-1A89-------------------------------
  2720. INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
  2721.     AH = 89h
  2722.     AL = adapter number
  2723.     BH = window number
  2724.     BL = socket number
  2725.     CX = window size (bytes if I/O window, 4K units if memory window)
  2726.     DH = window attributes (see #0574)
  2727.     DL = access speed (only one bit set) (see #0570)
  2728.     SI = window base address (bytes if I/O, 4K units if memory window)
  2729.     DI = card offset addrress (memory only, 4K units)
  2730. Return: CF clear if successful
  2731.         AH destroyed
  2732.     CF set on error
  2733.         AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #0552)
  2734. SeeAlso: AH=87h,AH=88h,AH=8Bh
  2735. --------X-1A8A-------------------------------
  2736. INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
  2737.     AH = 8Ah
  2738.     AL = adapter number
  2739.     BH = window number
  2740.     BL = page number
  2741. Return: CF clear if successful
  2742.         AH destroyed
  2743.         DX = page attributes (see #0575)
  2744.         DI = memory card offset (4K units)
  2745.     CF set on error
  2746.         AH = error code (01h,08h,11h) (see #0552)
  2747. Notes:    this function is only valid for memory-mapped windows
  2748.     the socket being operated on is implied by the previous AH=89h call
  2749. SeeAlso: AH=88h,AH=8Bh
  2750.  
  2751. Bitfields for PCMCIA page attributes:
  2752. Bit(s)    Description    (Table 0575)
  2753.  0    page enabled
  2754.  15-1    reserved (0)
  2755. --------X-1A8B-------------------------------
  2756. INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
  2757.     AH = 8Bh
  2758.     AL = adapter number
  2759.     BH = window number
  2760.     BL = page number
  2761.     DX = page attributes (see #0575)
  2762.     DI = memory card offset (4K units)
  2763. Return: CF clear if successful
  2764.         AH destroyed
  2765.     CF set on error
  2766.         AH = error code (01h,02h,07h,08h,11h) (see #0552)
  2767. Notes:    this function is only valid for memory-mapped windows
  2768.     the socket being operated on is implied by the previous AH=89h call
  2769. SeeAlso: AH=89h,AH=8Ah
  2770. --------X-1A8C-------------------------------
  2771. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
  2772.     AH = 8Ch
  2773.     AL = adapter number
  2774.     BL = socket number (01h to maximum supported by adapter)
  2775. Return: CF clear if successful
  2776.         AH destroyed
  2777.         DH = capabilities (see #0576)
  2778.         DL = hardware indicators (see #0577)
  2779.         DS:SI -> Socket Characteristics table (see #0578)
  2780.         DS:DI -> Power Management table (see #0580)
  2781.     CF set on error
  2782.         AH = error code (01h,0Bh) (see #0552)
  2783. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  2784.  
  2785. Bitfields for PCMCIA socket capabilities:
  2786. Bit(s)    Description    (Table 0576)
  2787.  0    card change
  2788.  1    card lock
  2789.  2    insert card (motor control)
  2790.  3    eject card (motor control)
  2791.  4-7    reserved (0)
  2792.  
  2793. Bitfields for PCMCIA socket hardware indicators:
  2794. Bit(s)    Description    (Table 0577)
  2795.  0    busy status
  2796.  1    write-protected
  2797.  2    battery status
  2798.  3    card lock status
  2799.  4    XIP status (eXecute-In-Place)
  2800.  5-7    reserved (0)
  2801.  
  2802. Format of PCMCIA Socket Characteristics table:
  2803. Offset    Size    Description    (Table 0578)
  2804.  00h    WORD    supported card types (see #0579)
  2805.  02h    WORD    steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
  2806.  04h    WORD    additional steerable IRQ levels
  2807.         bit 0: NMI
  2808.         bit 1: I/O check
  2809.         bit 2: bus error
  2810.         bit 3: vendor-unique
  2811.         bits 4-7 reserved (0)
  2812.  
  2813. Bitfields for supported card types:
  2814. Bit(s)    Description    (Table 0579)
  2815.  0    memory card
  2816.  1    I/O card
  2817.  2-7    reserved (0)
  2818.  
  2819. Format of PCMCIA Power Management table:
  2820. Offset    Size    Description    (Table 0580)
  2821.  00h    WORD    number of entries in table (0 if power management not avail)
  2822.  02h 2N BYTEs    power levels
  2823.         byte 0: voltage in 0.1V units
  2824.         byte 1: power supply
  2825.             bit 7: Vcc
  2826.             bit 6: Vpp1
  2827.             bit 5: Vpp2
  2828. --------X-1A8D-------------------------------
  2829. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
  2830.     AH = 8Dh
  2831.     AL = adapter number
  2832.     BL = socket number (01h to maximum supported by adapter)
  2833. Return: CF clear if successful
  2834.         AH destroyed
  2835.         BH = status change interrupt enable mask (see #0554)
  2836.         CH = Vcc level (lower nybble) (see #0580)
  2837.         CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  2838.         DH = current socket status (see #0555)
  2839.         DL = indicators (see #0577)
  2840.         SI = card type (see #0581)
  2841.         DI = IRQ level steering (I/O only) (see #0582)
  2842.     CF set on error
  2843.         AH = error code (01h,0Bh) (see #0552)
  2844. SeeAlso: AH=8Ch,AH=8Eh
  2845.  
  2846. Bitfields for PCMCIA card type:
  2847. Bit(s)    Description    (Table 0581)
  2848.  0    memory
  2849.  1    I/O
  2850.  2-15    reserved (0)
  2851.  
  2852. Bitfields for PCMCIA I/O level steering:
  2853. Bit(s)    Description    (Table 0582)
  2854.  15    interrupt steering enabled
  2855.  14-5    reserved (0)
  2856.  4-0    IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
  2857. --------X-1A8E-------------------------------
  2858. INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
  2859.     AH = 8Eh
  2860.     AL = adapter number
  2861.     BL = socket number (01h to maximum supported by adapter)
  2862.     BH = status change interrupt enable mask (see #0554)
  2863.     CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  2864.     DH = current socket status (see #0555)
  2865.     DL = indicators (see #0577)
  2866.     SI = card type (see #0581)
  2867.     DI = IRQ level steering (I/O only) (see #0582)
  2868. Return: CF clear if successful
  2869.         AH destroyed
  2870.     CF set on error
  2871.         AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #0552)
  2872. SeeAlso: AH=8Ch,AH=8Dh
  2873. --------X-1A8F-------------------------------
  2874. INT 1A - PCMCIA Socket Services v1.00 - GET CARD
  2875.     AH = 8Fh
  2876.     AL = adapter number
  2877.     BL = socket number (01h to maximum supported by adapter)
  2878. Return: CF clear if successful
  2879.         AH destroyed
  2880.         DL = current card status (see #0556)
  2881.     CF set on error
  2882.         AH = error code (01h,0Bh) (see #0552)
  2883. SeeAlso: AH=8Dh,AH=90h
  2884. --------X-1A90-------------------------------
  2885. INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
  2886.     AH = 90h
  2887.     AL = adapter number
  2888.     BL = socket number (01h to maximum supported by adapter)
  2889. Return: CF clear if successful
  2890.         AH destroyed
  2891.     CF set on error
  2892.         AH = error code (01h,0Bh,14h) (see #0552)
  2893. Note:    toggles RESET pin of the specified card, but does not wait after
  2894.       toggling the pin; it is the caller's responsibility to avoid
  2895.       accessing the card before it is ready again
  2896. --------X-1A91-------------------------------
  2897. INT 1A - PCMCIA Socket Services v1.00 - READ ONE
  2898.     AH = 91h
  2899.     AL = adapter number
  2900.     BL = socket number (01h to maximum supported by adapter)
  2901.     BH = attributes (see #0583)
  2902.     DX:SI = card address
  2903. Return: CF clear if successful
  2904.         AH destroyed
  2905.         CL/CX = value read
  2906.     CF set on error
  2907.         AH = error code (01h,07h,09h,0Bh,14h) (see #0552)
  2908.         CX may be destroyed
  2909. Note:    this function is only valid for I/O-mapped sockets
  2910. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"DOS"
  2911.  
  2912. Bitfields for PCMCIA attributes:
  2913. Bit(s)    Description    (Table 0583)
  2914.  2    even bytes only
  2915.  1    word rather than byte
  2916.  0    attribute memory instead of common memory
  2917. --------X-1A92-------------------------------
  2918. INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
  2919.     AH = 92h
  2920.     AL = adapter number
  2921.     BL = socket number (01h to maximum supported by adapter)
  2922.     BH = attributes (see #0583)
  2923.     CL/CX = value to write
  2924.     DX:SI = card address
  2925. Return: CF clear if successful
  2926.         AH destroyed
  2927.     CF set on error
  2928.         AH = error code (01h,07h,0Bh,12h,14h) (see #0552)
  2929. Note:    this function is only valid for I/O-mapped sockets; it also does not
  2930.       implement Card Technology handling--use AH=94h when writing to
  2931.       non-RAM technologies
  2932. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS"
  2933. --------X-1A93-------------------------------
  2934. INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
  2935.     AH = 93h
  2936.     AL = adapter number
  2937.     BL = socket number (01h to maximum supported by adapter)
  2938.     BH = attributes (see #0583)
  2939.     CX = number of bytes or words to read
  2940.     DX:SI = card address
  2941.     DS:DI -> data buffer to be filled
  2942. Return: CF clear if successful
  2943.         AH destroyed
  2944.     CF set on error
  2945.         AH = error code (01h,07h,09h,0Bh,14h) (see #0552)
  2946. Note:    this function is only available on I/O-mapped sockets
  2947. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS"
  2948. --------X-1A94-------------------------------
  2949. INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
  2950.     AH = 94h
  2951.     AL = adapter number
  2952.     BL = socket number (01h to maximum supported by adapter)
  2953.     BH = attributes (see #0583)
  2954.     CX = number of bytes or words to read
  2955.     DX:DI = card address
  2956.     DS:SI -> buffer containing data
  2957.     BP = Card Technology type (0000h = RAM)
  2958. Return: CF clear if successful
  2959.         AH destroyed
  2960.     CF set on error
  2961.         AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #0552)
  2962. Notes:    this function is only available on I/O-mapped sockets
  2963.     Socket Services calls the Card Technology callback (see #0557) for
  2964.       any card technology it does not directly support
  2965. SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"DOS"
  2966. --------X-1A95-------------------------------
  2967. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
  2968.     AH = 95h
  2969.     AL = adapter number
  2970.     BH = EDC generator number
  2971. Return: CF clear if successful
  2972.         AH destroyed
  2973.         CX = bitmap of assignable sockets
  2974.         DH = EDC capabilities (see #0584)
  2975.         DL = supported EDC types (see #0585)
  2976.     CF set on error
  2977.         AH = error code (01h,04h) (see #0552)
  2978. SeeAlso: AH=96h,AH=9Ch
  2979.  
  2980. Bitfields for EDC capabilities:
  2981. Bit(s)    Description    (Table 0584)
  2982.  0    unidirectional only generation
  2983.  1    bidirectional only generation
  2984.  2    register-based (I/O-mapped) support
  2985.  3    memory-mapped support
  2986.  4    pausable
  2987.  5-7    reserved (0)
  2988.  
  2989. Bitfields for supported EDC types:
  2990. Bit(s)    Description    (Table 0585)
  2991.  0    8-checksum
  2992.  1    16-CRC-SDLC
  2993.  2-7    reserved (0)
  2994. --------X-1A96-------------------------------
  2995. INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
  2996.     AH = 96h
  2997.     AL = adapter number
  2998.     BH = EDC generator number
  2999. Return: CF clear if successful
  3000.         AH destroyed
  3001.         BL = socket number
  3002.         DH = EDC attributes (see #0586)
  3003.         DL = EDC type (see #0585) (only one bit set)
  3004.     CF set on error
  3005.         AH = error code (01h,04h) (see #0552)
  3006. SeeAlso: AH=95h,AH=97h,AH=9Ch
  3007.  
  3008. Bitfields for EDC attributes:
  3009. Bit(s)    Description    (Table 0586)
  3010.  0    unidirectional only
  3011.  1    (if 0 set) clear=read, set=write
  3012.  2-7    reserved (0)
  3013. --------X-1A97-------------------------------
  3014. INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
  3015.     AH = 97h
  3016.     AL = adapter number
  3017.     BH = EDC generator
  3018.     BL = socket number
  3019.     DH = EDC attributes (see #0586)
  3020.     DL = EDC type (see #0585) (only one bit may be set)
  3021. Return: CF clear if successful
  3022.         AH destroyed
  3023.     CF set on error
  3024.         AH = error code (01h,02h,04h,0Bh) (see #0552)
  3025. SeeAlso: AH=96h,AH=9Ch
  3026. --------X-1A98-------------------------------
  3027. INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
  3028.     AH = 98h
  3029.     AL = adapter number
  3030.     BH = EDC generator
  3031. Return: CF clear if successful
  3032.         AH destroyed
  3033.     CF set on error
  3034.         AH = error code (01h,04h) (see #0552)
  3035. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  3036. --------X-1A99-------------------------------
  3037. INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
  3038.     AH = 99h
  3039.     AL = adapter number
  3040.     BH = EDC generator
  3041. Return: CF clear if successful
  3042.         AH destroyed
  3043.     CF set on error
  3044.         AH = error code (01h,04h) (see #0552)
  3045. SeeAlso: AH=9Ah
  3046. --------X-1A9A-------------------------------
  3047. INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
  3048.     AH = 9Ah
  3049.     AL = adapter number
  3050.     BH = EDC generator
  3051. Return: CF clear if successful
  3052.         AH destroyed
  3053.     CF set on error
  3054.         AH = error code (01h,04h) (see #0552)
  3055. SeeAlso: AH=99h,AH=98h
  3056. --------X-1A9B-------------------------------
  3057. INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
  3058.     AH = 9Bh
  3059.     AL = adapter number
  3060.     BH = EDC generator
  3061. Return: CF clear if successful
  3062.         AH destroyed
  3063.     CF set on error
  3064.         AH = error code (see #0552)
  3065. SeeAlso: AH=98h,AH=99h,AH=9Ch
  3066. --------X-1A9C-------------------------------
  3067. INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
  3068.     AH = 9Ch
  3069.     AL = adapter number
  3070.     BH = EDC generator
  3071. Return: CF clear if successful
  3072.         AH destroyed
  3073.         DL/DX = computed checksum or CRC
  3074.     CF set on error
  3075.         AH = error code (01h,04h) (see #0552)
  3076. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  3077. --------X-1A9D-------------------------------
  3078. INT 1A - PCMCIA Socket Services v2.1??? - GET VENDOR INFO
  3079.     AH = 9Dh
  3080.     AL = adapter number
  3081.     BH = EDC generator
  3082.     ES:EDI -> vendor information structure (see #0587)
  3083. Return: CF clear if successful
  3084.         AH destroyed
  3085.         DX = vendor release number in BCD
  3086.         ES:EDI unchanged
  3087.     CF set on error
  3088.         AH = error code (01h,15h) (see #0552)
  3089. Notes:    this API is supported by recent versions of the AMI BIOS
  3090.     the low-level API described here is hidden by the higher-level
  3091.       ExCA API once Card Services has been installed
  3092. SeeAlso: AH=9Dh"ExCA"
  3093.  
  3094. Format of Vendor Information structure:
  3095. Offset    Size    Description    (Table 0587)
  3096.  00h    WORD    buffer length (set to size of buffer below)
  3097.  04h    WORD    (ret) data length
  3098.  08h  x BYTEs    implementor name (ASCIIZ string)
  3099. --------X-1A9D-------------------------------
  3100. INT 1A - Intel PCMCIA ExCA Card Services - API
  3101.     AH = 9Dh
  3102.     AL = subfunction (see #0588)
  3103.     ???
  3104. Return: ???
  3105. SeeAlso: AH=9Dh"ExCA"
  3106.  
  3107. (Table 0588)
  3108. Values for PCMCIA ExCA Card Services subfunction number:
  3109.  00h    Client Services: Get Number of Sockets
  3110.  01h    Advanced Client Utilities: Initialize
  3111.  02h    Client Services: Register Client
  3112.  03h    Client Services: Deregister Client
  3113.  04h    Advanced Client Utilities: Enumerate Clients
  3114.  05h    Client Services: Register SCB
  3115.  06h    Client Services: Deregister SCB
  3116.  07h    Advanced Client Utilities: Register MTD
  3117.  08h    Advanced Client Utilities: Deregister MTD
  3118.  09h    Advanced Client Utilities: Enumerate MTD
  3119.  0Ah    Client Services: Get Status
  3120.  0Bh    Client Services: Reset Card
  3121.  0Ch    Client Utilities: Get First Tuple
  3122.  0Dh    Client Utilities: Get Next Tuple
  3123.  0Eh    Client Utilities: Determine First Region
  3124.  0Fh    Client Utilities: Determine Next Region
  3125.  10h    Client Utilities: Get First Region
  3126.  11h    Client Utilities: Get Next Region
  3127.  12h    Client Utilities: Get First Partition
  3128.  13h    Client Utilities: Get Next Partition
  3129.  14h    Bulk Memory Services: Open Region
  3130.  15h    Bulk Memory Services: Read Memory
  3131.  16h    Bulk Memory Services: Write Memory
  3132.  17h    Bulk Memory Services: Copy Memory
  3133.  18h    Bulk Memory Services: Erase Memory
  3134.  19h    Resource Management: Request I/O
  3135.  1Ah    Resource Management: Release I/O
  3136.  1Bh    Resource Management: Request Memory
  3137.  1Ch    Client Services: Modify Window
  3138.  1Dh    Resource Management: Release Memory
  3139.  1Eh    Client Services: Map Mem Page
  3140.  1Fh    Advanced Client Utilities: Return SS Entry
  3141.  20h    Advanced Client Utilities: Map Log to Phy
  3142.  21h    Advanced Client Utilities: Map Log Phy to Log
  3143.  22h    Resource Management: Request IRQ
  3144.  23h    Resource Management: Release IRQ
  3145.  24h    Bulk Memory Services: Close Region
  3146. --------X-1A9E-------------------------------
  3147. INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT
  3148.     AH = 9Eh
  3149.     AL = adapter number
  3150. Return: CF clear if successful
  3151.         AH destroyed
  3152.         CX = bitmap representing sockets which have changed status
  3153.     CF set on error
  3154.         AH = error code (01h) (see #0552)
  3155. Note:    this API is supported by recent versions of the AMI BIOS
  3156. --------X-1A9F-------------------------------
  3157. INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER
  3158.     AH = 9Fh
  3159.     AL = adapter number
  3160.     BL = mode
  3161.         00h get prior INT 1Ah handler
  3162.         01h set prior INT 1Ah handler
  3163.         CX:DX -> new prior handler
  3164. Return: CF clear if successful
  3165.         AH destroyed
  3166.         CX:DX -> old prior handler
  3167.     CF set on error
  3168.         AH = error code (01h,15h,18h) (see #0552)
  3169. Desc:    allows hooking of INT 16h "behind" the Socket Services hook
  3170. Note:    this API is supported by recent versions of the AMI BIOS
  3171. SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA"
  3172. --------c-1AA0-------------------------------
  3173. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  3174.     AH = A0h
  3175. Return: AH = B0h if installed
  3176.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  3177.         ES = code segment
  3178.         ES:BX -> name of current spool file
  3179.         ES:SI -> current despool file
  3180.         CL = despooler state (00h disabled, 41h enabled)
  3181.         CH = spooler state (00h disabled, 41h enabled)
  3182.         DL = despooler activity
  3183.         00h currently active printing a file
  3184.         41h standing by
  3185.         DH = 00h ???
  3186.            = 41h ???
  3187.         DI = 0000h ???
  3188.          0001h ???
  3189. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3190.       Software Company
  3191. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3192.       as that is a licensed version of Disk Spool II
  3193. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  3194. --------X-1AA0-------------------------------
  3195. INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS
  3196.     AH = A0h
  3197.     AL = adapter number
  3198.     BH = mode
  3199.         00h real mode
  3200.         01h 16:16 protected mode
  3201.         02h 16:32 protected mode
  3202.         03h 00:32 (Flat) protected mode
  3203.     BL = subfunction
  3204.         00h return number of additional data areas (see #0589)
  3205.         01h return description of additional data areas (see #0590)
  3206.         02h accept mode-specific pointers to data areas (see #0591)
  3207.     ES:EDI -> buffer supplied by caller
  3208. Return: CF clear if successful
  3209.         AH destroyed
  3210.         CX = number of additional data areas
  3211.         ES:EDI unchanged
  3212.     CF set on error
  3213.         AH = error code (01h,02h,15h,16h,18h) (see #0552)
  3214. SeeAlso: AH=9Fh,AH=AEh
  3215.  
  3216. Format of PCMCIA Subfunction 00h Buffer Table Entry structure:
  3217. Offset    Size    Description    (Table 0589)
  3218.  00h    DWORD    32-bit linear base address of the code segment
  3219.  04h    DWORD    segment limit of the code segment
  3220.  08h    DWORD    entry point offset
  3221.  0Ch    DWORD    32-bit linear base address of the data segment
  3222.         (ignored in 00:32 flat mode)
  3223.  10h    DWORD    segment limit of the data segment
  3224.  14h    DWORD    data area offset.  Only used in 32-bit protected mode.
  3225. SeeAlso: #0590,#0591
  3226.  
  3227. Format of PCMCIA Additional Data Area Description structure [array]:
  3228. Offset    Size    Description    (Table 0590)
  3229.  00h    DWORD    32-bit linear base address of the additional data segment
  3230.         (ignored in 00:32 flat mode)
  3231.  04h    DWORD    segment limit of the code segment
  3232.  08h    DWORD    data area offset (only used in 32-bit protected mode)
  3233. SeeAlso: #0589,#0591
  3234.  
  3235. Format of PCMCIA Subfunction 02h Buffer Table Entry structure:
  3236. Offset    Size    Description    (Table 0591)
  3237.  00h    DWORD    32-bit offset(ignored in 16:16 protected mode)
  3238.  04h    DWORD    selector (only used in 00:32 flat mode)
  3239.  08h    DWORD    reserved
  3240. SeeAlso: #0589,#0590
  3241. --------X-1AA1-------------------------------
  3242. INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS
  3243.     AH = A1h
  3244.     AL = adapter number
  3245.     BH = Mode
  3246.          00h = Real Mode
  3247.          01h = 16:16 Protected Mode
  3248.          02h = 16:32 Protected Mode
  3249.          03h = 00:32 Protected Mode
  3250.     CX = Number of access offsets
  3251.     ES:EDI -> buffer supplied by caller, CX words long (see #0592)
  3252. Return: CF clear if successful
  3253.         AH destroyed
  3254.         DX = number of access offsets supported
  3255.         ES:EDI unchanged
  3256.     CF set on error
  3257.         AH = error code (01h,15h,16h) (see #0552)
  3258. Desc:    Returns an array of low-level adapter-specific optimized
  3259.     PC Card access routines for adapters that use registers
  3260.     or I/O ports to access PC Card memory.    Adapters that access
  3261.     PC Card memory through windows mapped to host system memory
  3262.     do not support this function.
  3263. Note:    offsets returned are 16-bit offsets into the
  3264.     Socket Services code segment.  They must be called
  3265.     appropriately for the processor mode selected.
  3266.     (Real, 16:16 and 16:32 modes use FAR CALL,
  3267.     Flat 00:32 mode uses a 32-bit NEAR CALL).
  3268. SeeAlso: AH=AEh
  3269.  
  3270. Format of Offset Table structure:
  3271. Offset    Size    Description    (Table 0592)
  3272.  00h    WORD    Set Address
  3273.  02h    WORD    Set Auto Increment
  3274.  04h    WORD    Read Byte
  3275.  06h    WORD    Read Word
  3276.  08h    WORD    Read Byte with Auto Increment
  3277.  0Ah    WORD    Read Word with Auto Increment
  3278.  0Ch    WORD    Read Words
  3279.  0Eh    WORD    Read Words with Auto Increment
  3280.  10h    WORD    Write Byte
  3281.  12h    WORD    Write Word
  3282.  14h    WORD    Write Byte with Auto Increment
  3283.  16h    WORD    Write Word with Auto Increment
  3284.  18h    WORD    Write Words
  3285.  1Ah    WORD    Write Words with Auto Increment
  3286.  1Ch    WORD    Compare Byte
  3287.  1Eh    WORD    Compare Byte with Auto Increment
  3288.  20h    WORD    Compare Words
  3289.  22h    WORD    Compare Words with Auto Increment
  3290. --------c-1AAB-------------------------------
  3291. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3292.     AH = ABh
  3293. Return: AH = BAh if installed
  3294.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  3295.         ES = code segment
  3296.         ES:BX -> name of current spool file
  3297.         ES:SI -> current despool file
  3298.         CL = despooler state (00h disabled, 41h enabled)
  3299.         CH = spooler state (00h disabled, 41h enabled)
  3300.         DL = despooler activity
  3301.         00h currently active printing a file
  3302.         41h standing by
  3303.         DH = 00h ???
  3304.            = 41h ???
  3305.         DI = 0000h ???
  3306.          0001h ???
  3307. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3308.       Software Company
  3309. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  3310. --------c-1AAC-------------------------------
  3311. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3312.     AH = ACh
  3313. Return: (see AH=ABh)
  3314. Note:    this function is identical to AH=ABh
  3315. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  3316. --------c-1AAD-------------------------------
  3317. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  3318.     AH = ADh
  3319.     AL = function code (see #0593)
  3320. Return: AH = 00h if successful
  3321. SeeAlso: AH=ABh
  3322.  
  3323. (Table 0593)
  3324. Values for Disk Spool function code:
  3325.  02h    enable spooler only
  3326.  03h    enable the despooler
  3327.  04h    disable the despooler
  3328.  08h    inhibit popup menu
  3329.  09h    enable popup menu
  3330.  0Ah    ???
  3331.  0Bh    disable the spooler
  3332.  0Ch    start despooler after last successfully printed document???
  3333.  0Dh    start despooler at the exact point where it last left off???
  3334.  0Eh    pop up the menu
  3335.  0Fh    ???
  3336.  11h    ???
  3337.  14h    ???
  3338.  15h    ???
  3339.  16h    ???
  3340.  17h    ???
  3341.  18h    ???
  3342.  19h    ???
  3343.  20h    clear file pointed to by the despooler???
  3344.  21h    ???
  3345.  22h    ???
  3346.  23h    ???
  3347.  30h    ???
  3348. --------X-1AAE-------------------------------
  3349. INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC
  3350.     AH = AEh
  3351.     AL = adapter number
  3352.     all other registers are vendor-specific
  3353. Return: vendor specific
  3354. SeeAlso: AH=A1h,AH=AFh
  3355. --------X-1AAE-------------------------------
  3356. INT 1A - PCMCIA Socket Services v2.1 - API
  3357.     AH = AEh
  3358.     SI = function
  3359.         0002h ???
  3360.         0100h ???
  3361.         0101h ???
  3362.         8000h ???
  3363.         8001h ???
  3364.     details not yet available
  3365. Return: CF clear if successful
  3366.     CF set on error
  3367.         AH = error code (02h,0Bh,11h,15h,17h) (see #0552)
  3368. SeeAlso: AH=9Eh
  3369. --------X-1AAF-------------------------------
  3370. INT 1A - PCMCIA v2 Card Services - API
  3371.     AH = AFh
  3372.     AL = function
  3373.         00h close memory
  3374.         01h copy memory
  3375.         02h deregister client
  3376.         03h get client information (see #0598)
  3377.         04h get configuration information (see #0600)
  3378.         05h get first partition
  3379.         06h get first region
  3380.         07h get first tuple (see #0607)
  3381.         08h get next partition
  3382.         09h get next region
  3383.         0Ah get next tuple
  3384.         0Bh    get Card Services information (see #0596)
  3385.         0Ch get status
  3386.         0Dh    get tuple data (see #0608)
  3387.         0Eh    get first client (see #0597)
  3388.         0Fh get/register Erase Queue
  3389.         10h    register client (see #0609)
  3390.         11h reset function
  3391.         12h map logical socket
  3392.         13h map logical window
  3393.         14h map memory page
  3394.         15h map physical socket
  3395.         16h map physical window
  3396.         17h modify window
  3397.         18h open memory
  3398.         19h read memory
  3399.         1Ah register MTD
  3400.         1Bh release I/O
  3401.         1Ch release IRQ (see #0611)
  3402.         1Dh release window
  3403.         1Eh release configuration (see #0612)
  3404.         1Fh request I/O (see #0613)
  3405.         20h request IRQ (see #0614)
  3406.         21h reqeust window (see #0616)
  3407.         22h request socket mask
  3408.         23h return SS entry
  3409.         24h write memory
  3410.         25h deregister Erase Queue
  3411.         26h check Erase Queue
  3412.         27h modify configuration
  3413.         28h register timer
  3414.         29h set region
  3415.         2Ah get next client
  3416.         2Bh validate CIS
  3417.         2Ch request exclusive access (see #0619)
  3418.         2Dh release exclusive access (see #0619)
  3419.         2Eh get event mask
  3420.         2Fh release socket mask
  3421.         30h request configuration (see #0620)
  3422.         31h set event mask
  3423.         32h add Socket Service
  3424.         33h replace Socket Service
  3425.         34h vendor-specific
  3426.         35h adjust resource information
  3427.         36h access configuration register
  3428.         37h get first window
  3429.         38h get next window
  3430.         39h get memory page
  3431.         3Ah request DMA
  3432.         3Bh release DMA
  3433.     further details not yet available
  3434. Return: ??? = result code (see #0594)
  3435. SeeAlso: AH=AEh
  3436.  
  3437. (Table 0594)
  3438. Values for PCMCIA Card Services result codes:
  3439.  00h    successful
  3440.  01h    invalid adapter number
  3441.  02h    bad value for attribute field
  3442.  03h    bad value for base system memory address
  3443.  04h    invalid EDC generator specified
  3444.  05h    (reserved for historical reasons)
  3445.  06h    invalid IRQ level specified
  3446.  07h    invalid PC Card memory array offset
  3447.  08h    invalid page number specified
  3448.  09h    unable to complete read request
  3449.  0Ah    invalid size specified
  3450.  0Bh    invalid socket number
  3451.  0Ch    (reserved for historical reasons)
  3452.  0Dh    invalid window or interface type
  3453.  0Eh    invalid Vcc power level specified
  3454.  0Fh    invalid Vpp1 or Vpp2 power level specified
  3455.  10h    (reserved for historical reasons)
  3456.  11h    invalid window number
  3457.  12h    unable to complete write request
  3458.  13h    (reserved for historical reasons)
  3459.  14h    no PC Card in socket
  3460.  15h    service not supported by implementation
  3461.  16h    unsupported processor mode
  3462.  17h    specified speed not available
  3463.  18h    busy -- retry later
  3464.  19h    undefined error (general failure)
  3465.  1Ah    storage medium write protected
  3466.  1Bh    argument length in (E)CX is invalid
  3467.  1Ch    bad value(s) in argument packet
  3468.  1Dh    configuration has already been locked
  3469.  1Eh    requested resource already in use
  3470.  1Fh    no more items of requested type available
  3471.  20h    out of resources
  3472.  21h    invalid client handle
  3473.  22h    unsupported client version
  3474.  
  3475. (Table 0595)
  3476. Values for Card Services Callback Event codes:
  3477.  01h    battery dead
  3478.  02h    battery low
  3479.  03h    card locked
  3480.  04h    card has become ready
  3481.  05h    card removed
  3482.  06h    card unlocked
  3483.  07h    motorized ejection complete
  3484.  08h    ejection requested
  3485.  09h    insertion complete
  3486.  0Ah    insertion requested
  3487.  0Bh    power management: resume
  3488.  0Ch    power management: suspend
  3489.  0Dh    exclusive access granted
  3490.  0Eh    exclusive access requested
  3491.  0Fh    perform physical reset
  3492.  10h    physical reset requested
  3493.  11h    card has been reset
  3494.  12h    MTD request (read/write/etc)
  3495.  14h    request for client info
  3496.  15h    timer has expired
  3497.  16h    Socket Service was modified
  3498.  17h    write-protected
  3499.  18h    attention requested
  3500.  40h    card insertion
  3501.  80h    reset complete
  3502.  81h    erase complete
  3503.  82h    registration complete
  3504.  
  3505. Format of Card Services Information:
  3506. Offset    Size    Description    (Table 0596)
  3507.  00h    WORD    length of information record in bytes
  3508.  02h    WORD    signature
  3509.  04h    WORD    number of sockets
  3510.  06h    WORD    revision level
  3511.  08h    WORD    Card Services level
  3512.  0Ah    WORD    offset of vendor string
  3513.  0Ch    WORD    length of vendor string
  3514.  0Eh    WORD    number of functions
  3515.  10h 255 BYTEs    vendor string
  3516. SeeAlso: #0598
  3517.  
  3518. Format of Card Services Client structure:
  3519. Offset    Size    Description    (Table 0597)
  3520.  00h    WORD    PCMCIA socket number
  3521.  02h    WORD    client attributes
  3522.  
  3523. Format of Cards Services Client Information:
  3524. Offset    Size    Description    (Table 0598)
  3525.  00h    WORD    maximum length of data in bytes (180)
  3526.  02h    WORD    (ret) length of returned data
  3527.  04h    WORD    attributes (see #0599)
  3528.  06h    WORD    revision level (BCD)
  3529.  08h    WORD    Card Services level (BCD)
  3530.  0Ah    WORD    revision date (DOS packed date format) (see #1006)
  3531.  0Ch    WORD    offset to name
  3532.  0Eh    WORD    length of name
  3533.  10h    WORD    offset to vendor string
  3534.  12h    WORD    length of vendor string
  3535.  14h 80 BYTEs    buffer for name
  3536.  64h 80 BYTEs    buffer for vendor string
  3537. SeeAlso: #0596,#0600
  3538.  
  3539. Bitfields for Card Services client attributes:
  3540. Bit(s)    Description    (Table 0599)
  3541.  0    memory client
  3542.  1    MTD client
  3543.  2    I/O client
  3544.  3    all clients can share this card
  3545.  4    only one client can use this card at a time
  3546. SeeAlso: #0598
  3547.  
  3548. Format of Card Services configuration information:
  3549. Offset    Size    Description    (Table 0600)
  3550.  00h    WORD    socket (usually 0000h)
  3551.  02h    WORD    attributes (see #0601)
  3552.  04h    BYTE    Vcc value
  3553.  05h    BYTE    Vpp1 value
  3554.  06h    BYTE    Vpp2 value
  3555.  07h    BYTE    interface type (see #0602)
  3556.  08h    DWORD    base address of configuration registers
  3557.  0Ch    BYTE    card's Status register setting (if present)
  3558.  0Dh    BYTE    card's Pin register setting (if present)
  3559.  0Eh    BYTE    card's Socket/Copy register setting (if present)
  3560.  0Fh    BYTE    card's Option register setting (if present)
  3561.  10h    BYTE    bitmap of present card configuration registers
  3562.  11h    BYTE    first device type
  3563.  12h    BYTE    function code
  3564.  13h    BYTE    SysInit mask
  3565.  14h    WORD    manufacturer code
  3566.  16h    WORD    manufacturer information
  3567.  18h    BYTE    valie card register values
  3568.  19h    BYTE    IRQ number assigned to PC Card
  3569.  1Ah    WORD    IRQ attributes (see #0604)
  3570.  1Ch    WORD    base port address (for I/O range 1)
  3571.  1Eh    BYTE    number of contiguous ports (for I/O range 1)
  3572.  1Fh    BYTE    bitmap of port attributes (for I/O range 1) (see #0605)
  3573.  20h    WORD    base port address (for I/O range 2)
  3574.  22h    BYTE    number of contiguous ports (for I/O range 2)
  3575.  23h    BYTE    bitmap of port attributes (for I/O range 2) (see #0605)
  3576.  24h    BYTE    number of I/O address lines decoded (16-bit PC Card only)
  3577.  25h    BYTE    extended status register setting (if present)
  3578.  26h    BYTE    bitmap of DMA attributes (see #0606)
  3579.         (note: value at call is used to set!)
  3580.  27h    BYTE    assigned DMA channel
  3581.  28h    BYTE    number of I/O windows in use on logical socket
  3582.  29h    BYTE    number of memory windows in use on logical socket
  3583. SeeAlso: #0599,#0620
  3584.  
  3585. Bitfields for Card Services Configuration attributes:
  3586. Bit(s)    Description    (Table 0601)
  3587.  0    exclusive
  3588.  1    IRQ active
  3589.  2    CardBus card
  3590.  3-5    reserved (0)
  3591.  6    DMA channel is active
  3592.  7    reserved (0)
  3593.  8    valid client
  3594.  9    overwrite voltage value
  3595.  10-15    reserved (0)
  3596. SeeAlso: #0600
  3597.  
  3598. Bitfields for Card Services Configuration interface type:
  3599. Bit(s)    Description    (Table 0602)
  3600.  0    memory interface
  3601.  1    I/O and memory interface
  3602.  2    CardBus interface
  3603.  3-7    reserved (0)
  3604. SeeAlso: #0600
  3605.  
  3606. Bitfields for Card Services Configuration registers:
  3607. Bit(s)    Description    (Table 0603)
  3608.  0    option value is value
  3609.  1    status value
  3610.  2    pin-replacement value
  3611.  3    copy value
  3612.  4    extended status value
  3613.  5-7    reserved (0)
  3614. SeeAlso: #0600
  3615.  
  3616. Bitfields for Card Services Configuration IRQ attributes:
  3617. Bit(s)    Description    (Table 0604)
  3618.  1-0    sharing
  3619.     00 no sharing
  3620.     01 time-multiplex sharing
  3621.     10 dynamic sharing
  3622.     11 reserved
  3623.  2    force pulse mode
  3624.  3    first used together
  3625.  4-7    reserved
  3626.  8    pulse IRQ has been assigned
  3627.  9-15    reserved
  3628. SeeAlso: #0600,#0605,#0606,#0611,#0614
  3629.  
  3630. Bitfields for Card Services Configuration Port attributes:
  3631. Bit(s)    Description    (Table 0605)
  3632.  0    shared I/O ports
  3633.  1    "CS_FirstCommonUsedCard"
  3634.  2    force alias access
  3635.  3    =1 sixteen-bit I/O
  3636.     =0 eight-bit I/O
  3637.  7-4    reserved (0)
  3638. SeeAlso: #0600,#0604,#0606,#0613
  3639.  
  3640. Bitfields for Card Services Configuration DMA attributes:
  3641. Bit(s)    Description    (Table 0606)
  3642.  1-0    sharing mode
  3643.     00 no sharing
  3644.     01 time-multiplex sharing
  3645.     10 dynamic sharing
  3646.     11 reserved
  3647.  3-2    DMA request signal
  3648.     00 reserved
  3649.     01 DMARQ uses pin SPKR#
  3650.     10 DMARQ uses pin IOIS16#
  3651.     11 DMARQ uses pin INPACK#
  3652.  4    DMA size
  3653.     0 eight bits
  3654.     1 sixteen bits
  3655.  7-5    reserved (0)
  3656. SeeAlso: #0600,#0604,#0605
  3657.  
  3658. Format of Card Services Tuple information:
  3659. Offset    Size    Description    (Table 0607)
  3660.  00h    WORD    logical socket number
  3661.  02h    WORD    attributes
  3662.         bit 0: return Link tuples
  3663.  04h    BYTE    code value of desired tuple
  3664.  05h    BYTE    reserved (0)
  3665.  06h    WORD    (ret) TupleFlags
  3666.  08h    DWORD    (ret) -> Card Services Link State Information
  3667.  0Ch    DWORD    (ret) -> Card Services CIS State Information
  3668.  10h    BYTE    (ret) code for tuple
  3669.  11h    BYTE    (ret) link value for tuple
  3670. SeeAlso: #0608
  3671.  
  3672. Format of Card Services GetTupleData record:
  3673. Offset    Size    Description    (Table 0608)
  3674.  00h    WORD    logical socket
  3675.  02h    WORD    attributes
  3676.  04h    BYTE    code value of desired tuple
  3677.  05h    BYTE    offset into tuple from link byte
  3678.  06h    WORD    flags
  3679.  08h    DWORD    -> Link
  3680.  0Ch    DWORD    -> CIS
  3681.  10h    WORD    (call) maximum amount of data to return (0004h)
  3682.  12h    WORD    (ret) amount of data returned
  3683.  14h    DWORD    (ret) tuple data
  3684. SeeAlso: #0607
  3685.  
  3686. Format of Card Services Client Registration record:
  3687. Offset    Size    Description    (Table 0609)
  3688.  00h    WORD    attributes
  3689.  02h    WORD    event mask
  3690.  04h    WORD    client data (passed to client event handler in DI)
  3691. --- 16-bit code ---
  3692.  06h    WORD    client data selector (passed to event handler in DS)
  3693.  08h    WORD    client data offset (passed to event handler in SI)
  3694.  0Ah    WORD    reserved
  3695. --- 32-bit code ---
  3696.  06h    WORD    reserved
  3697.  08h    DWORD    client data offset (passed to event handler in ESI)
  3698. ------
  3699.  0Ch    WORD    expected Card Services version (0210h for v2.10)
  3700.  
  3701. Bitfields for Card Services client event codes:
  3702. Bit(s)    Description    (Table 0610)
  3703.  0    change in write-protect status
  3704.  1    change in card lock
  3705.  2    ejection request
  3706.  3    insertion request
  3707.  4    battery is dead
  3708.  5    battery low
  3709.  6    change in Ready
  3710.  7    change in Card Detect
  3711.  8    power management change
  3712.  9    reset
  3713.  10    Socket Services updated
  3714.  11    extended status change
  3715. SeeAlso: #0609
  3716.  
  3717. Format of Card Services ReleaseIRQ record:
  3718. Offset    Size    Description    (Table 0611)
  3719.  00h    WORD    logical socket number
  3720.  02h    WORD    attributes (see #0604)
  3721.  04h    BYTE    assigned IRQ number to be released
  3722.  
  3723. Format of Card Services Release Configuration record:
  3724. Offset    Size    Description    (Table 0612)
  3725.  00h    WORD    logical socket number
  3726.  
  3727. Format of Card Services Request I/O record:
  3728. Offset    Size    Description    (Table 0613)
  3729.  00h    WORD    logical socket number
  3730.  02h    WORD    base port 1
  3731.  04h    BYTE    size of port range 1
  3732.  05h    BYTE    attributes for port range 1 (see #0605)
  3733.  06h    WORD    base port 2
  3734.  08h    BYTE    size of port range 2
  3735.  09h    BYTE    attributes for port range 2 (see #0605)
  3736.  0Ah    BYTE    number of address lines (typically 16)
  3737. SeeAlso: #0614,#0612
  3738.  
  3739. Format of Card Services Request IRQ record:
  3740. Offset    Size    Description    (Table 0614)
  3741.  00h    WORD    logical socket number
  3742.  02h    WORD    attributes (see #0604)
  3743.  04h    BYTE    (ret) assigned IRQ number, if successful
  3744.  05h    BYTE    IRQ info (see #0615)
  3745.  06h    WORD    bitmap of available IRQs (bit 0 = IRQ0, etc.)
  3746.         (only if bit 4 of IRQ info set)
  3747. SeeAlso: #0613,#0612
  3748.  
  3749. Bitfields for Card Services Request IRQ info flags:
  3750. Bit(s)    Description    (Table 0615)
  3751.  7    IRQ is shared
  3752.  6    pulse (edge-triggered) interrupt
  3753.  5    level interrupt
  3754.  4    use IRQ bitmap
  3755. --- bit 4 set ---
  3756.  3    vendor-specific interrupt
  3757.  2    bus error
  3758.  1    I/O check interrupt
  3759.  0    NMI
  3760. --- bit 4 clear ---
  3761.  3-0    IRQ number
  3762. SeeAlso: #0614
  3763.  
  3764. Format of Card Services Request Window record:
  3765. Offset    Size    Description    (Table 0616)
  3766.  00h    WORD    logical socket number
  3767.  02h    WORD    attributes (see #0617)
  3768.  04h    DWORD    system base adress
  3769.  08h    DWORD    size of memory window
  3770.  0Ch    BYTE    additional info
  3771.         if attributes bit ??? is set, this is the address-lines field
  3772.         otherwise, this is the access-speed field (see #0618)
  3773.  
  3774. Bitfields for Card Services Request Window attributes:
  3775. Bit(s)    Description    (Table 0617)
  3776.  0    I/O window instead of memory window
  3777.  1    attribute memory instead of normal memory (16-bit PC Cards only)
  3778.  2    window enabled
  3779.  3    16-bit data path instead of 8-bit path (16-bit PC Cards only, v2.10+)
  3780.     (ignored if bit 9 set)
  3781.  4    size is given in 16K pages (invalid for CardBus PC Cards)
  3782.  5    shared (invalid for CardBus)
  3783.  6    first shared (invalid for CardBus)
  3784.  7    "CS_BindingSpecific" (memory window only)
  3785.  8    card offsets are window-size granular (16-bit PC Card memory window)
  3786.  9    32-bit data path (CardBus only)
  3787.  10    reserved (0)
  3788.  12-11    prefetch/cache
  3789.     00 neither prefetchable nor cacheable
  3790.     01 prefetchable but not cacheable
  3791.     10 prefetchable and cachable
  3792.     11 reserved
  3793.  15-13    decoded base address register number (CardBus only)
  3794. SeeAlso: #0616,#0618
  3795.  
  3796. Bitfields for Card Services Request Window access-speed:
  3797. Bit(s)    Description    (Table 0618)
  3798.  6-3    mantissa
  3799.     0000 use device speed code
  3800.     0001  1.0
  3801.     0010  1.2
  3802.     0011  1.2 ???
  3803.     0100  1.5
  3804.     0101  2.0
  3805.     0110  2.5
  3806.     0111  3.0
  3807.     1000  3.5
  3808.     1001  4.0
  3809.     1010  4.5
  3810.     1011  5.0
  3811.     1100  5.5
  3812.     1101  6.0
  3813.     1110  7.0
  3814.     1111  8.0
  3815. --- if mantissa==0 ---
  3816.  2-0    device speed code
  3817.     000 reserved
  3818.     001 250 ns
  3819.     010 200 ns
  3820.     011 150 ns
  3821.     100 100 ns
  3822.     101-111 reserved
  3823. --- if mantissa<>0 ---
  3824.  2-0    speed exponent
  3825.     000    1 ns
  3826.     001    10 ns
  3827.     010   100 ns
  3828.     011    1 us
  3829.     100    10 us
  3830.     101   100 us
  3831.     110    1 ms
  3832.     111    10 ms
  3833. SeeAlso: #0616,#0617
  3834.  
  3835. Format of Card Services Request/Release Exclusive Access record:
  3836. Offset    Size    Description    (Table 0619)
  3837.  00h    WORD    logical socket number
  3838.  02h    WORD    attributes (currently all reserved, must be 0000h)
  3839.  
  3840. Format of Card Services Request Configuration record:
  3841. Offset    Size    Description    (Table 0620)
  3842.  00h    WORD    socket (usually 0000h)
  3843.  02h    WORD    attributes (see #0601)
  3844.  04h    BYTE    Vcc value
  3845.  05h    BYTE    Vpp1 value
  3846.  06h    BYTE    Vpp2 value
  3847.  07h    BYTE    interface type (see #0602)
  3848.  08h    DWORD    base address of configuration registers
  3849.  0Ch    BYTE    card's Status register setting (if present)
  3850.  0Dh    BYTE    card's Pin register setting (if present)
  3851.  0Eh    BYTE    card's Socket/Copy register setting (if present)
  3852.  0Fh    BYTE    card's Option register setting (if present)
  3853.  10h    BYTE    bitmap of present card configuration registers
  3854.  11h    BYTE    extended status register setting (if present)
  3855. SeeAlso: #0600
  3856. --------X-1AB000-----------------------------
  3857. INT 1A U - HP 100LX/200LX - PCMCIA - ???
  3858.     AX = B000h
  3859.     ES:BX -> parameter block ???
  3860. Return: CF clear if ???
  3861.     CF set if ???
  3862. Note:    called by HP 100LX/200LX PCMCIA client CIC100.EXE
  3863. --------d-1AB001CX4D52-----------------------
  3864. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  3865.     AX = B001h
  3866.     CX = 4D52h ("MR")
  3867.     DX = 4349h ("CI")
  3868. Return: CX = 4943h ("IC") if installed
  3869.     DX = 524Dh ("RM") if installed
  3870.         ES:DI -> MRCINFO structure (see #0621)
  3871. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  3872.       be called first, as this call is used for the first, ROM-based
  3873.       MRCI server, while the other call is used for RAM-based servers
  3874.       which may be partially or entirely replacing a prior server
  3875. SeeAlso: INT 2F/AX=4A12h
  3876.  
  3877. Format of MRCINFO structure:
  3878. Offset    Size    Description    (Table 0621)
  3879.  00h  4 BYTEs    vendor signature
  3880.         "MSFT" Microsoft
  3881.  04h    WORD    server version (high=major)
  3882.  06h    WORD    MRCI specification version
  3883.  08h    DWORD    address of server entry point (see #0623)
  3884.  0Ch    WORD    bit flags: server capabilities (see #0622)
  3885.  0Eh    WORD    bit flags: hardware assisted capabilities (see #0622)
  3886.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  3887.  
  3888. Bitfields for MRCI capabilities:
  3889. Bit(s)    Description    (Table 0622)
  3890.  0    standard compress
  3891.  1    standard decompress
  3892.  2    update compress
  3893.  3    MaxCompress (not present in initial public release)
  3894.  4    reserved
  3895.  5    incremental decompress
  3896.  6    MRCI 2.0 standard compress
  3897.  7    MRCI 2.0 standard decompress
  3898.  8-14    reserved
  3899.  15    this structure is in ROM and can't be modified
  3900.     (server capabilities only)
  3901.  
  3902. (Table 0623)
  3903. Call MRCI entry point with:
  3904.     DS:SI -> MRCREQUEST structure (see #0624)
  3905.     CX = type of client (0000h application, 0001h file system)
  3906.     AX = operation
  3907.         0001h perform standard compression
  3908.         0002h perform standard decompression
  3909.         0004h perform update compression
  3910.         0008h perform MaxCompress
  3911.         0020h perform incremental decompression
  3912.         0040h perform MRCI 2.0 standard compression
  3913.         0080h perform MRCI 2.0 standard decompression
  3914.     AX = FFFFh clear flags
  3915.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  3916. Return: AX = status
  3917.         0000h successful
  3918.         0001h invalid function
  3919.         0002h server busy, try again
  3920.         0003h destination buffer too small
  3921.         0004h incompressible data
  3922.         0005h bad compressed data format
  3923.     BP destroyed (MS-DOS 6.2)
  3924. Note:    MRCI driver may chain to a previous driver
  3925.  
  3926. Format of MRCREQUEST structure:
  3927. Offset    Size    Description    (Table 0624)
  3928.  00h    DWORD    pointer to source buffer
  3929.  04h    WORD    size of source buffer (0000h = 64K)
  3930.  06h    WORD    (UpdateCompress only)
  3931.         (call) offset in source buffer of beginning of changed data
  3932.         (ret) offset in destination buffer of beginning of changed
  3933.               compressed data
  3934.  08h    DWORD    pointer to destination buffer
  3935.         must contain original compressed data for UpdateCompress
  3936.  0Ch    WORD    size of destination buffer (0000h = 64K)
  3937.         any compression: size of buffer for compressed data
  3938.         standard decompression: number of bytes to be decompressed
  3939.         incremental decompression: number of byte to decompress now
  3940.         (ret) actual size of resulting data
  3941.  0Eh    WORD    client compressed data storage allocation size
  3942.  10h    DWORD    incremental decompression state data
  3943.         set to 00000000h before first incremental decompression call
  3944. Notes:    the source and destination buffers may not overlap
  3945.     the source and destination buffer sizes should normally be the same
  3946.     application should not update the contents of the MRCREQUEST structure
  3947.       between incremental decompression calls
  3948. --------X-1AB101-----------------------------
  3949. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK
  3950.     AX = B101h
  3951. Return: AH = 00h if installed
  3952.         CF clear
  3953.         EDX = 20494350h (' ICP')
  3954.         EDI = physical address of protected-mode entry point (see #0627)
  3955.         AL = PCI hardware characteristics (see #0626)
  3956.         BH = PCI interface level major version (BCD)
  3957.         BL = PCI interface level minor version (BCD)
  3958.         CL = number of last PCI bus in system
  3959.     EAX, EBX, ECX, and EDX may be modified
  3960.     all other flags (except IF) may be modified
  3961. Note:    this function may require up to 1024 byte of stack; it will not enable
  3962.       interrupts if they were disabled before making the call
  3963. SeeAlso: AX=B181h
  3964.  
  3965. (Table 0625)
  3966. Values for PCI BIOS v2.0c status codes:
  3967.  00h    successful
  3968.  81h    unsupported function
  3969.  83h    bad vendor ID
  3970.  86h    device not found
  3971.  87h    bad PCI register number
  3972.  
  3973. Bitfields for PCI hardware characteristics:
  3974. Bit(s)    Description    (Table 0626)
  3975.  0    configuration space access mechanism 1 supported
  3976.  1    configuration space access mechanism 2 supported
  3977.  2-3    reserved
  3978.  4    Special Cycle generation mechanism 1 supported
  3979.  5    Special Cycle generation mechanism 2 supported
  3980.  6-7    reserved
  3981.  
  3982. (Table 0627)
  3983. Call protected-mode entry point with:
  3984.     registers as for real/V86-mode INT call
  3985.     CS = ring 0 descriptor with access to full address space
  3986. Return: as for real/V86-mode call
  3987. --------X-1AB102-----------------------------
  3988. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE
  3989.     AX = B102h
  3990.     CX = device ID
  3991.     DX = vendor ID
  3992.     SI = device index (0-n)
  3993. Return: CF clear if successful
  3994.     CF set on error
  3995.     AH = status (00h,83h,86h) (see #0625)
  3996.         00h successful
  3997.         BH = bus number
  3998.         BL = device/function number (bits 7-3 device, bits 2-0 func)
  3999.     EAX, EBX, ECX, and EDX may be modified
  4000.     all other flags (except IF) may be modified
  4001. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4002.       interrupts if they were disabled before making the call
  4003.     device ID FFFFh may be reserved as a wildcard in future implementations
  4004.     the meanings of BL and BH on return were exchanged between the initial
  4005.       drafts of the specification and final implementation
  4006.     all devices sharing a single vendor ID and device ID may be enumerated
  4007.       by incrementing SI from 0 until error 86h is returned
  4008. SeeAlso: AX=B182h
  4009. --------X-1AB103-----------------------------
  4010. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE
  4011.     AX = B103h
  4012.     ECX = class code (see also #F057,#0628)
  4013.         bits 31-24 unused
  4014.         bits 23-16 class
  4015.         bits 15-8  subclass
  4016.         bits 7-0   programming interface
  4017.     SI = device index (0-n)
  4018. Return: CF clear if successful
  4019.     CF set on error
  4020.     AH = status (00h,86h) (see #0625)
  4021.         00h successful
  4022.         BH = bus number
  4023.         BL = device/function number (bits 7-3 device, bits 2-0 func)
  4024.         86h device not found
  4025.     EAX, EBX, ECX, and EDX may be modified
  4026.     all other flags (except IF) may be modified
  4027. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4028.       interrupts if they were disabled before making the call
  4029.     the meanings of BL and BH on return were exchanged between the initial
  4030.       drafts of the specification and final implementation
  4031.     all devices sharing the same Class Code may be enumerated by
  4032.       incrementing SI from 0 until error 86h is returned
  4033. SeeAlso: AX=B183h
  4034. --------X-1AB106-----------------------------
  4035. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS
  4036.     AX = B106h
  4037.     BL = bus number
  4038.     EDX = Special Cycle data
  4039. Return: CF clear if successful
  4040.     CF set on error
  4041.     AH = status (00h,81h) (see #0625)
  4042.     EAX, EBX, ECX, and EDX may be modified
  4043.     all other flags (except IF) may be modified
  4044. Note:    this function may require up to 1024 byte of stack; it will not enable
  4045.       interrupts if they were disabled before making the call
  4046. SeeAlso: AX=B186h,INT 2F/AX=1684h/BX=304Ch
  4047. --------X-1AB108-----------------------------
  4048. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE
  4049.     AX = B108h
  4050.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4051.     BH = bus number
  4052.     DI = register number (0000h-00FFh) (see #0628)
  4053. Return: CF clear if successful
  4054.         CL = byte read
  4055.     CF set on error
  4056.     AH = status (00h,87h) (see #0625)
  4057.     EAX, EBX, ECX, and EDX may be modified
  4058.     all other flags (except IF) may be modified
  4059. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4060.       interrupts if they were disabled before making the call
  4061.     the meanings of BL and BH on entry were exchanged between the initial
  4062.       drafts of the specification and final implementation
  4063. SeeAlso: AX=B109h,AX=B10Ah,AX=B188h,INT 2F/AX=1684h/BX=304Ch
  4064. --------X-1AB109-----------------------------
  4065. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD
  4066.     AX = B109h
  4067.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4068.     BH = bus number
  4069.     DI = register number (0000h-00FFh) (see #0628)
  4070. Return: CF clear if successful
  4071.         CX = word read
  4072.     CF set on error
  4073.     AH = status (00h,87h) (see #0625)
  4074.     EAX, EBX, ECX, and EDX may be modified
  4075.     all other flags (except IF) may be modified
  4076. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4077.       interrupts if they were disabled before making the call
  4078.     the meanings of BL and BH on entry were exchanged between the initial
  4079.       drafts of the specification and final implementation
  4080. SeeAlso: AX=B108h,AX=B10Ah,AX=B189h,INT 2F/AX=1684h/BX=304Ch
  4081. --------X-1AB10A-----------------------------
  4082. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD
  4083.     AX = B10Ah
  4084.     BH = bus number
  4085.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4086.     DI = register number (0000h-00FFh) (see #0628)
  4087. Return: CF clear if successful
  4088.         ECX = dword read
  4089.     CF set on error
  4090.     AH = status (00h,87h) (see #0625)
  4091.     EAX, EBX, ECX, and EDX may be modified
  4092.     all other flags (except IF) may be modified
  4093. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4094.       interrupts if they were disabled before making the call
  4095.     the meanings of BL and BH on entry were exchanged between the initial
  4096.       drafts of the specification and final implementation
  4097. SeeAlso: AX=B108h,AX=B109h,AX=B18Ah,INT 2F/AX=1684h/BX=304Ch
  4098.  
  4099. Format of PCI Configuration Data:
  4100. Offset    Size    Description    (Table 0628)
  4101.  00h    WORD    vendor ID (read-only) (see #0629)
  4102.         FFFFh returned if requested device non-existent
  4103.  02h    WORD    device ID (read-only)
  4104.  04h    WORD    command register (see #0630)
  4105.  06h    WORD    status register (see #0631)
  4106.  08h    BYTE    revision ID
  4107.  09h  3 BYTEs    class code
  4108.         bits 7-0: programming interface
  4109.         bits 15-8: sub-class
  4110.         bits 23-16: class code (see also #F057)
  4111.  0Ch    BYTE    cache line size
  4112.  0Dh    BYTE    latency timer
  4113.  0Eh    BYTE    header type
  4114.         bits 6-0: header format
  4115.             00h other
  4116.             01h PCI-to-PCI bridge
  4117.         bit 7: multi-function device
  4118.  0Fh    BYTE    Built-In Self-Test result (see #0632)
  4119.  10h    DWORD    base address 0 (see #0633)
  4120.  14h    DWORD    base address 1
  4121. ---header type 00h---
  4122.  18h    DWORD    base address 2
  4123.  1Ch    DWORD    base address 3
  4124.  20h    DWORD    base address 4
  4125.  24h    DWORD    base address 5
  4126.  28h    DWORD    CardBus CIS pointer (read-only) (see #0635)
  4127.  2Ch    WORD    subsystem vendor ID or 0000h
  4128.  2Eh    WORD    subsystem ID or 0000h
  4129.  30h    DWORD    expansion ROM base address (see #0634)
  4130.  34h  2 DWORDs    reserved
  4131.  3Ch    BYTE    interrupt line
  4132.         00h = none, 01h = IRQ1 to 0Fh = IRQ15
  4133.  3Dh    BYTE    interrupt pin (read-only)
  4134.         (00h = none, else indicates INTA# to INTD#)
  4135.  3Eh    BYTE    minimum time bus master needs PCI bus ownership, in 250ns units
  4136.         (read-only)
  4137.  3Fh    BYTE    maximum latency, in 250ns units (bus masters only) (read-only)
  4138. ---header type 01h---
  4139.  18h    BYTE    primary bus number (for bus closer to host processor)
  4140.  19h    BYTE    secondary bus number (for bus further from host processor)
  4141.  1Ah    BYTE    subordinate bus number
  4142.  1Bh    BYTE    secondary latency timer
  4143.  1Ch    BYTE    I/O base (see #0636)
  4144.  1Dh    BYTE    I/O limit (see #0636)
  4145.  1Eh    WORD    secondary status
  4146.  20h    WORD    memory base (see #0637)
  4147.  22h    WORD    memory limit
  4148.  24h    WORD    prefetchable memory base
  4149.  26h    WORD    prefetchable memory limit
  4150.  28h    DWORD    prefetchable base, upper 32 bits
  4151.  2Ch    DWORD    prefetchable limit, upper 32 bits
  4152.  30h    WORD    I/O base, upper 16 bits
  4153.  32h    WORD    I/O limit, upper 16 bits
  4154.  34h    DWORD    reserved
  4155.  38h    DWORD    expansion ROM base address
  4156.  3Ch    BYTE    interrupt line
  4157.  3Dh    BYTE    interrupt pin (read-only)
  4158.  3Eh    WORD    bridge control
  4159. ------
  4160.  40h 48 DWORDs    varies by device (see #0638,#0639,#0640,#0643)
  4161.  
  4162. (Table 0629)
  4163. Values for PCI vendor ID:
  4164.  1000h    NCR
  4165.  1002h    ATI
  4166.  1003h    ULSI Systems
  4167.  1004h    VLSI Technologies
  4168.  1005h    Avance Logics (ADL)
  4169.  1006h    Reply Group
  4170.  1007h    Netframe Systems Inc.
  4171.  1008h    Epson
  4172.  100Ah    Phoenix Technologies
  4173.  100Bh    National Semiconductor
  4174.  100Ch    Tseng Labs
  4175.  100Dh    AST Research
  4176.  100Eh    Weitek
  4177.  1010h    Video Logic Ltd
  4178.  1011h    DEC
  4179.  1012h    Micronics Computers
  4180.  1013h    Cirrus Logic (see also #0028)
  4181.  1014h    IBM
  4182.  1016h    ICL Personal Systems
  4183.  1017h    SPEA Software AG
  4184.  1018h    Unisys
  4185.  1019h    EliteGroup Computer Sys
  4186.  101Ah    NCR
  4187.  101Bh    Vitesse
  4188.  101Ch    Western Digital
  4189.  101Eh    AMI
  4190.  101Fh    Picturetel
  4191.  1020h    Hitachi
  4192.  1021h    Oki
  4193.  1022h    Advanced Micro Devices
  4194.  1023h    Trident
  4195.  1024h    Zenith Data Systems
  4196.  1025h    Acer
  4197.  1028h    Dell
  4198.  1029h    Siemens Nixdorf
  4199.  102Ah    LSI Logic
  4200.  102Bh    Matrox
  4201.  102Ch    Chips & Technologies
  4202.  102Dh    Wyse
  4203.  102Eh    Olivetti
  4204.  102Fh    Toshiba
  4205.  1030h    TMC
  4206.  1031h    Miro
  4207.  1032h    Compaq
  4208.  1033h    NEC
  4209.  1034h    Burndy
  4210.  1035h    Computers and Communications Research Lab
  4211.  1036h    Future Domain
  4212.  1037h    Hitachi Micro Systems
  4213.  1038h    AMP
  4214.  1039h    SIS
  4215.  103Ah    Seiko Epson
  4216.  103Bh    Tatung
  4217.  103Ch    Hewlett-Packard
  4218.  103Eh    Solliday
  4219.  103Fh    Logic Modeling
  4220.  1040h    Kubota Pacific
  4221.  1041h    Computrend
  4222.  1042h    PC Technology (see also PORT 03F0h"PCTech")
  4223.  1043h    Asustek
  4224.  1044h    Distributed Processing Technology (DPT)
  4225.  1045h    OPTi
  4226.  1046h    IPC Corporation, Ltd.
  4227.  1047h    Genoa
  4228.  1048h    Elsa
  4229.  1049h    Fountain
  4230.  104Ah    SGS Thomson
  4231.  104Bh    BusLogic
  4232.  104Ch    Texas Instruments
  4233.  104Dh    Sony
  4234.  104Eh    Oak
  4235.  104Fh    Co-Time
  4236.  1050h    Winbond
  4237.  1051h    Anigma
  4238.  1052h    Young
  4239.  1054h    Hitachi, Ltd.
  4240.  1055h    EFAR Microsystems
  4241.  1056h    ICL
  4242.  1057h    Motorola
  4243.  1058h    Electronics and Telec. RSH
  4244.  1059h    Teknor
  4245.  105Ah    Promise
  4246.  105Bh    Foxconn
  4247.  105Ch    Wipro
  4248.  105Dh    Number9
  4249.  105Eh    VTech
  4250.  105Fh    Infotronic
  4251.  1060h    UMC
  4252.  1061h    X Tech
  4253.  1062h    Maspar
  4254.  1063h    Ocean
  4255.  1064h    Alcatel
  4256.  1065h    Texas Micro
  4257.  1066h    PicoPower
  4258.  1067h    Mitsubishi
  4259.  1068h    Diversified
  4260.  1069h    Mylex
  4261.  106Ah    Aten
  4262.  106Bh    Apple
  4263.  106Ch    Hyundai
  4264.  106Dh    Sequent
  4265.  106Eh    DFI
  4266.  106Fh    City Gate
  4267.  1070h    Daewoo
  4268.  1071h    Mitac
  4269.  1072h    GIT
  4270.  1073h    Yamaha
  4271.  1074h    NexGen
  4272.  1075h    Advanced Integration
  4273.  1076h    Chaintech
  4274.  1077h    Q Logic
  4275.  1078h    Cyrix
  4276.  1079h    I-Bus
  4277.  107Ah    Networth
  4278.  107Bh    Gateway 2000
  4279.  107Ch    Goldstar
  4280.  107Dh    Leadtek
  4281.  107Eh    Interphase
  4282.  107Fh    DTC
  4283.  1080h    Contaq
  4284.  1081h    Supermac
  4285.  1082h    EFA
  4286.  1083h    Forex
  4287.  1084h    Parador
  4288.  1085h    Tulip
  4289.  1086h    J. Bond
  4290.  1087h    Cache
  4291.  1088h    Microcomputer Systems
  4292.  1089h    Data General
  4293.  108Ah    Bit3
  4294.  108Ch    lonex
  4295.  108Dh    Olicom
  4296.  108Fh    Systemsoft
  4297.  1090h    Encore
  4298.  1091h    Intergraph
  4299.  1092h    Diamond
  4300.  1093h    National Instruments
  4301.  1094h    FIC
  4302.  1095h    CMD
  4303.  1096h    Alacron
  4304.  1097h    Appian
  4305.  1098h    Vision
  4306.  1099h    Samsung
  4307.  109Ah    Packard Bell
  4308.  109Bh    Gemlight
  4309.  109Ch    Megachips
  4310.  109Dh    Zida
  4311.  109Eh    Brooktree
  4312.  109Fh    Trigem
  4313.  10A0h    Meidensha
  4314.  10A1h    Juko
  4315.  10A2h    Quantum
  4316.  10A3h    Everex
  4317.  10A4h    Globe
  4318.  10A5h    Racal Interlan
  4319.  10A6h    Informtech
  4320.  10A7h    Benchmarq
  4321.  10A8h    Sierra
  4322.  10A9h    Silicon Graphics
  4323.  10AAh    ACC
  4324.  10ABh    Digicom
  4325.  10ACh    Honeywell
  4326.  10ADh    Symphony
  4327.  10AEh    Cornerstone
  4328.  10AFh    Microcomputer Systems
  4329.  10B0h    CardExpert
  4330.  10B1h    Cabletron
  4331.  10B2h    Raytheon
  4332.  10B3h    Databook
  4333.  10B4h    STB
  4334.  10B5h    PLX Technology
  4335.  10B7h    3com
  4336.  10B8h    Standard Microsystems Corporation (SMC)
  4337.  10B9h    Acer Labs
  4338.  10BAh    Mitsubishi
  4339.  10BBh    Dapha
  4340.  10BCh    ALR
  4341.  10BDh    Surecom
  4342.  10BEh    Tseng Labs
  4343.  10BFh    Most Inc.
  4344.  10C0h    Boca Research
  4345.  10C1h    ICM
  4346.  10C2h    Auspex
  4347.  10C3h    Samsung
  4348.  10C4h    Award
  4349.  10C5h    Xerox
  4350.  10C6h    Rambus
  4351.  10C7h    Media Vision
  4352.  10C8h    Neomagic
  4353.  10C9h    DataExpert
  4354.  10CAh    Fujitsu
  4355.  10CBh    Omron
  4356.  10CCh    Mentor
  4357.  10CDh    Advanced System Products
  4358.  10CEh    Radius
  4359.  10CFh    Citicorp
  4360.  10D0h    Fujitsu
  4361.  10D1h    Future+
  4362.  10D2h    Molex
  4363.  10D3h    Jabil
  4364.  10D4h    Hualon
  4365.  10D5h    Autologic
  4366.  10D6h    Cetia
  4367.  10D7h    BCM
  4368.  10D8h    Advanced Peripherals
  4369.  10D9h    Macronix
  4370.  10DAh    Thomas-Conrad
  4371.  10DBh    Rohm
  4372.  10DCh    CERN/ECP/EDU
  4373.  10DDh    Evans & Sutherland
  4374.  10DEh    NVidia
  4375.  10DFh    Emulex
  4376.  10E0h    IMS
  4377.  10E1h    TekRAM
  4378.  10E2h    Aptix
  4379.  10E3h    Newbridge
  4380.  10E4h    Tandem
  4381.  10E5h    Micro Industries
  4382.  10E6h    Gainbery
  4383.  10E7h    Vadem
  4384.  10E8h    Applied Micro
  4385.  10E9h    ALPS
  4386.  10EAh    Integraphics
  4387.  10EBh    Artists
  4388.  10ECh    Realtek
  4389.  10EDh    ASCII Corporation
  4390.  10EEh    Xilinx
  4391.  10EFh    Racore
  4392.  10F0h    Peritek
  4393.  10F1h    Tyan
  4394.  10F2h    Achme
  4395.  10F3h    Alaris
  4396.  10F4h    S-MOS Systems
  4397.  10F5h    NKK
  4398.  10F6h    Creative Electronic
  4399.  10F7h    Matsushita
  4400.  10F8h    Altos
  4401.  10F9h    PC Direct
  4402.  10FAh    Truevision
  4403.  10FBh    Thesys
  4404.  10FCh    I/O Data Device
  4405.  10FDh    Soyo
  4406.  10FEh    Fast
  4407.  10FFh    N-Cube
  4408.  1100h    Jazz
  4409.  1101h    Initio
  4410.  1102h    Creative Labs
  4411.  1103h    Triones
  4412.  1104h    Rasterops
  4413.  1105h    Sigma
  4414.  1106h    VIA
  4415.  1107h    Stratus
  4416.  1108h    Proteon
  4417.  110Bh    Xenon
  4418.  110Ch    Mini-Max
  4419.  110Dh    ZNyX
  4420.  110Eh    CPU Tech
  4421.  110Fh    Ross
  4422.  1110h    Powerhouse
  4423.  1111h    S.C.O.
  4424.  1112h    Rockwell
  4425.  1113h    Accton
  4426.  1114h    Atmel
  4427.  1115h    DuPont
  4428.  1116h    Data Translation
  4429.  1117h    Datacube
  4430.  1118h    Berg
  4431.  1119h    Vortex
  4432.  111Ah    Efficient Networks, Inc.
  4433.  111Bh    Teledyne
  4434.  111Ch    Tricord Systems, Inc.
  4435.  111Dh    Integrated Device Tech
  4436.  111Eh    Eldec Corporation
  4437.  111Fh    Precision Digital Images
  4438.  1120h    Emc Corporation
  4439.  1121h    Zilog
  4440.  1122h    Multi-tech Systems, Inc.
  4441.  1124h    Leutron Vision AG
  4442.  1125h    Eurocore
  4443.  1126h    Vigra
  4444.  1129h    Firmworks
  4445.  112Ah    Hermes Electronics Co.
  4446.  112Bh    Linotype - Hell AG
  4447.  112Dh    Ravicad
  4448.  112Eh    Infomedia MicroElectronics Inc
  4449.  112Fh    Imaging Technology
  4450.  1130h    Computervision
  4451.  1131h    Philips Semiconductors
  4452.  1132h    Mitel Corp
  4453.  1133h    Eicon Technology Corporation
  4454.  1134h    Mercury Computer Systems Inc
  4455.  1135h    Fuji Xerox Co Ltd
  4456.  1136h    Momentum Data Systems
  4457.  1137h    Cisco Systems Inc
  4458.  1138h    Ziatech Corporation
  4459.  1139h    Dynamic Pictures Inc
  4460.  113Ah    FWB Inc
  4461.  113Ch    Cyclone Micro
  4462.  113Dh    Leading Edge Products Inc
  4463.  113Eh    Sanyo Electric Co
  4464.  113Fh    Equinox Systems
  4465.  1140h    Intervoice Inc
  4466.  1141h    Crest Microsystem Inc
  4467.  1142h    Alliance Semiconductor Corp
  4468.  1143h    Netpower, Inc.
  4469.  1144h    Cincinnati Milacron
  4470.  1145h    Workbit Corp
  4471.  1146h    Force Computers
  4472.  1147h    Interface Corp.
  4473.  1148h    Schneider & Koch Co.
  4474.  1149h    Win System Corporation
  4475.  114Ah    Vmic
  4476.  114Bh    Canopus Co.
  4477.  114Ch    Annabooks
  4478.  114Dh    IC Corporation
  4479.  114Eh    Nikon Systems Inc
  4480.  114Fh    Digi International
  4481.  1150h    Thinking Machines Corp.
  4482.  1151h    JAE Electronics Inc.
  4483.  1152h    Megatek
  4484.  1153h    Land Win Electronic Corp.
  4485.  1154h    Melco Inc.
  4486.  1155h    Pine Technology Ltd.
  4487.  1156h    Periscope Engineering
  4488.  1159h    MuTech
  4489.  1193h    Zeinet
  4490.  120Eh    Cyclades
  4491.  1C1Ch    Symphony
  4492.  1DE1h    TekRAM
  4493.  5333h    S3
  4494.  5700h    Netpower
  4495.  8086h    Intel
  4496.  9004h    Adaptec
  4497.  907Fh    Atronics
  4498.  EDD8h    Ark Logic Inc
  4499. SeeAlso: #0628
  4500.  
  4501. Bitfields for PCI Configuration Command Register:
  4502. Bit(s)    Description    (Table 0630)
  4503.  0    I/O access enabled
  4504.  1    memory access enabled
  4505.  2    master enable
  4506.  3    special cycle recognition enabled
  4507.  4    memory write and invalidate enabled
  4508.  5    VGA palette snoop enabled
  4509.  6    parity error response enabled
  4510.  7    wait cycles enabled
  4511.  8    system error (SERR# line) enabled
  4512.  9    fast back-to-back transactions enabled
  4513.  15-10    reserved
  4514. SeeAlso: #0628,#0631
  4515.  
  4516. Format of PCI Configuration Status Register:
  4517. Bit(s)    Description    (Table 0631)
  4518.  4-0    reserved (0)
  4519.  5    capable of running at 66 MHz
  4520.  6    UDF supported
  4521.  7    capable of fast back-to-back transactions
  4522.  8    data parity error reported
  4523.  10-9    device select timing
  4524.     00 fast
  4525.     01 medium
  4526.     10 slow
  4527.     11 reserved
  4528.  11    signaled target abort
  4529.  12    received target abort
  4530.  13    received master abort
  4531.  14    signaled system error (SERR# line)
  4532.  15    detected parity error (set even if parity error reporting is disabled)
  4533. SeeAlso: #0628,#0630
  4534.  
  4535. Bitfields for PCI Configuration Built-In Self-Test register:
  4536. Bit(s)    Description    (Table 0632)
  4537.  3-0    completion code (0000 = successful)
  4538.  5-4    reserved
  4539.  6    start BIST
  4540.  7    BIST-capable
  4541. SeeAlso: #0628
  4542.  
  4543. Bitfields for PCI Configuration Base Address:
  4544. Bit(s)    Description    (Table 0633)
  4545.  0    address type (0 = memory space, 1 = I/O space)
  4546. ---memory address---
  4547.  2-1    address type
  4548.     00 anywhere in first 4GB
  4549.     01 below 1MB
  4550.     10 anywhere in 64-bit address space
  4551.     11 reserved
  4552.  3    prefetchable
  4553.  31-4    bits 31-4 of base memory address if addressable in first 1MB or 4GB
  4554.  63-4    bits 63-4 of base memory address if addressable in 64-bit memory
  4555.     (bits 63-32 are stored in the following base address DWORD)
  4556. ---I/O address---
  4557.  1    reserved
  4558.  31-2    bits 31-2 of base I/O port
  4559. SeeAlso: #0628
  4560.  
  4561. Bitfields for PCI Configuration Expansion ROM Address:
  4562. Bit(s)    Description    (Table 0634)
  4563.  0    address decode enable (ROM address is valid)
  4564.  10-1    reserved
  4565.  31-11    bits 31-11 of ROM's starting physical address
  4566. SeeAlso: #0628
  4567.  
  4568. Bitfields for PCI Configuration CardBus CIS Pointer:
  4569. Bit(s)    Description    (Table 0635)
  4570.  27-0    offset within address space defined by bits 30-28
  4571.  30-28    address space
  4572.     000 in device's device-specific configuration space
  4573.     001 in memory pointed to by base address register 0
  4574.     ...
  4575.     110 in memory pointed to by base address register 5
  4576.     111 in device's expansion ROM
  4577.  31    reserved (0)
  4578.  
  4579. Bitfields for PCI Configuration I/O base and limit:
  4580. Bit(s)    Description    (Table 0636)
  4581.  3-0    (read-only) address decoding type
  4582.     0000 16-bit
  4583.     0001 32-bit
  4584.     other reserved
  4585.  7-4    bits 15-12 of I/O address range
  4586. SeeAlso: #0628,#0637
  4587.  
  4588. Bitfields for PCI Configuration memory base and limit:
  4589. Bit(s)    Description    (Table 0637)
  4590.  3-0    address decode type
  4591.     0000 32-bit address decoder
  4592.     0001 64-bit address decoder
  4593.     other reserved
  4594.  15-4    bits 31-20 of memory address range
  4595. SeeAlso: #0628,#0636
  4596.  
  4597. Format of PCI Configuration Data for VLSI VL82C591 Host/PCI bridge:
  4598. Offset    Size    Description    (Table 0638)
  4599.  00h 64 BYTEs    header (see #0628)
  4600.         (device ID 0005h)
  4601.  40h    BYTE    bus number
  4602.  41h    BYTE    subordinate bus number
  4603.  42h    WORD    reserved
  4604.  44h  4 DWORDs    reserved
  4605.  54h  2 BYTEs    device-specific configuration registers
  4606.  56h    WORD    reserved
  4607.  58h  2 BYTEs    device-specific configuration registers
  4608.  5Ah    WORD    reserved
  4609.  5Ch  5 BYTEs    device-specific configuration registers
  4610.     ...
  4611.  FFh    BYTE    device-specific configuration register
  4612. SeeAlso: #0628,#0629,#0639
  4613.  
  4614. Format of PCI Configuration data for VLSI VL82C593 PCI/ISA bridge:
  4615. Offset    Size    Description    (Table 0639)
  4616.  00h 64 BYTEs    header (see #0628)
  4617.         (device ID 0006h)
  4618.  40h  4 DWORDs    reserved
  4619.  50h 11 BYTEs    device-specific configuration registers
  4620.  5Bh    BYTE    reserved
  4621.  5Ch 25 BYTEs    device-specific configuration registers
  4622.  75h 138 BYTEs    reserved
  4623.  FFh    BYTE    device-specific configuration register
  4624. SeeAlso: #0628,#0638
  4625.  
  4626. Format of PCI Configuration data for Intel 82434 Cache/DRAM Controller:
  4627. Offset    Size    Description    (Table 0640)
  4628.  00h 64 BYTEs    header (see #0628)
  4629.         (vendor ID 8086h, device ID 04A3h)
  4630.  40h 16 BYTEs    unused (hard-wired to 00h)
  4631.  50h    BYTE    secondary (L2) cache control???
  4632.         bit 0: ???
  4633.         bit 1: ???
  4634.         bit 2: enable L2 cache
  4635.  51h    BYTE    deturbo frequency control register
  4636.         when deturbo mode is selected (see PORT 0CF9h), the chipset
  4637.           places a hold on the memory bus for a fraction of the
  4638.           time inversely proportional to the value in this register
  4639.           (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
  4640.           (only bits 7-6 writable, bits 5-0 hardwired to 0)
  4641.  52h    BYTE    ???
  4642.         bits 6-7: ???
  4643.         bit 1: ???
  4644.         bit 0: ???
  4645.  53h    BYTE    ???
  4646.  54h    BYTE    ???
  4647.         bit 2: ???
  4648.  55h  2 BYTEs    ???
  4649.  57h    BYTE    ???
  4650.         bit 3: ???
  4651.  58h    BYTE    ???
  4652.         bit 0:
  4653.  59h    BYTE    ???
  4654.         bits 3-0: ???
  4655.         bit 4:
  4656.         bit 5:
  4657.         bit 6:
  4658.  5Ah  2 BYTEs    ???
  4659.  5Ch  4 BYTEs    ???
  4660.  60h    BYTE    size of first DRAM bank (first two SIMM slots) in MB
  4661.  61h    BYTE    size of second DRAM bank (second two SIMM slots) in MB
  4662.  62h  4 BYTEs    ???
  4663.         (on a system with four 4M SIMMs, 60h-65h contain
  4664.           08h 08h 10h 10h 10h 10h; two 4M/two 8M SIMMs contains
  4665.           08h 10h 18h 18h 18h 18h)
  4666.  65h    BYTE    memory size in megabytes
  4667.  66h  2 BYTEs    ??? (set to same value as 65h)
  4668.  68h  4 BYTEs    ???
  4669.  6Ch    DWORD    unused??? (apparently hardwired to 00000000h)
  4670.  70h    BYTE    ???
  4671.         bits 1-0: ???
  4672.  71h    BYTE    ???
  4673.         bit 3: ???
  4674.  72h    BYTE    ???
  4675.         bits 2-0: ???
  4676.         bit 5:    map SMM-mode memory (64K) into address space when bits
  4677.             2-0 = 010 (default 3000h:0000h; can be changed by
  4678.             first SMM event)
  4679.  73h  5 BYTEs    ???
  4680.  78h    WORD    ???
  4681.  7Ah  2 BYTEs    ???
  4682.  7Ch    DWORD    ???
  4683.         bit 13: byte merging enabled
  4684.  80h 128 BYTEs    unused???
  4685. Note:    the 82434 is part of the Intel Neptune chipset
  4686. SeeAlso: #0642,#0643
  4687.  
  4688. Format of PCI Configuration data for Intel 82424 Cache Controller:
  4689. Offset    Size    Description    (Table 0641)
  4690.  00h 64 BYTEs    header (see #0628)
  4691.         (vendor ID 8086h, device ID 0483h)
  4692.  40h    BYTE    bus number
  4693.  41h    BYTE    subordinate bus number
  4694.  42h    BYTE    disconnect timer
  4695.  50h    BYTE    host CPU selection
  4696.  51h    BYTE    deturbo frequency control
  4697.         when deturbo mode is selected (see PORT 0CF9h), the chipset
  4698.           places a hold on the memory bus for a fraction of the
  4699.           time inversely proportional to the value in this register
  4700.           (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
  4701.  52h    BYTE    secondary cache control
  4702.  53h    BYTE    write buffer control
  4703.  54h    BYTE    PCI features control
  4704.  55h    BYTE    DRAM Operation Mode Select
  4705.  56h    BYTE    System Exception Handling
  4706.  57h    BYTE    SMM Control Register
  4707.  59h  7    BYTEs    Programmable Attribute Map registers 0-6
  4708.  60h  4 BYTEs    DRAM Row Boundary registers 0-3
  4709.  64h  4 BYTEs    unused???
  4710.  68h    WORD    Memory Hole-0
  4711.  6Ah    WORD    Memory Hole-1
  4712. Note:    the above field names are those given by EduWARE's PCI Configuration
  4713.       Manager v1.2
  4714. SeeAlso: #0640,#0643
  4715.  
  4716. Format of PCI Configuration data for Intel 82378 ISA Bridge:
  4717. Offset    Size    Description    (Table 0642)
  4718.  00h 64 BYTEs    header (see #0628)
  4719.         (vendor ID 8086h, device ID 0484h)
  4720.  40h    BYTE    PCI Control
  4721.  41h    BYTE    PCI Arbiter Control
  4722.  42h    BYTE    PCI Arbiter Priority Control
  4723.  43h    BYTE    unused??? (00h)
  4724.  44h    BYTE    MEMCS# Control
  4725.  45h    BYTE    MEMCS# Bottom of Hole
  4726.  46h    BYTE    MEMCS# Top of Hole
  4727.  47h    BYTE    MEMCS# Top of Memory
  4728.  48h    BYTE    ISA Address Decoder Control
  4729.  49h    BYTE    ISA Address Decoder ROM Block Enable
  4730.  4Ah    BYTE    ISA Address Decoder Bottom of Hole
  4731.  4Bh    BYTE    ISA Address Decoder Top of Hole
  4732.  4Ch    BYTE    ISA Controller Recovery Time
  4733.  4Dh    BYTE    ISA Clock Divisor
  4734.  4Eh    BYTE    Utility Bus Chip Select Enable A
  4735.  4Fh    BYTE    Utility Bus Chip Select Enable B
  4736.  50h  4 BYTEs    unused???
  4737.  54h    BYTE    MEMCS# Attribute Register #1
  4738.  55h    BYTE    MEMCS# Attribute Register #2
  4739.  56h    BYTE    MEMCS# Attribute Register #3
  4740.  57h    BYTE    Scatter/Gather Relocation Base Adress
  4741.  80h    WORD    BIOS timer base address (see PORT 0078h)
  4742.         bits 15-1 are bits 15-1 of BIOS timer port address
  4743.         bit 0: timer enabled (if disabled, other bits ignored)
  4744.  82h 30 BYTEs    unused???
  4745.  A0h    BYTE    ??? (08h,0Bh)
  4746.         bit 0: ???
  4747.  A1h    BYTE    unused???
  4748.  A2h    BYTE    ???
  4749.  A4h    BYTE    ???
  4750.  A5h    BYTE    ???
  4751.  A7h    BYTE    ???
  4752.  A8h    BYTE    ??? (0Fh)
  4753.  A9h    BYTE    unused???
  4754.  AAh    BYTE    ???
  4755.         bit 7: ???
  4756.         bit 6: ???
  4757.         bit 5: ???
  4758.  ABh 85 BYTEs    unused???
  4759. Note:    the above field names are those given by EduWARE's PCI Configuration
  4760.       Manager v1.2
  4761. SeeAlso: #0640
  4762.  
  4763. Format of PCI Configuration data for Intel 82425EX PSC:
  4764. Offset    Size    Description    (Table 0643)
  4765.  00h 64 BYTEs    header (see #0628)
  4766.         (vendor ID 8086h, device ID 0486h)
  4767.  40h    BYTE    PCI control register (see #0644)
  4768.  41h  3 BYTEs    ???
  4769.  44h    BYTE    host device control register (see #0645)
  4770.  45h  3 BYTEs    ???
  4771.  48h    WORD    PCI local-bus IDE control register (see #0646)
  4772.  4Ah  2 BYTEs    ???
  4773.  4Ch    BYTE    ISA I/O recovery timer register (see #0647)
  4774.  4Dh    BYTE    part revision register (see #0648)
  4775.  4Eh    BYTE    X-bus Chip Select A register (see #0649)
  4776.  4Fh    BYTE    ???
  4777.  50h    BYTE    host select register
  4778.  51h    BYTE    deturbo frequency control register
  4779.         when deturbo mode is selected (see PORT 0CF9h), the chipset
  4780.           places a hold on the memory bus for a fraction of the
  4781.           time inversely proportional to the value in this register
  4782.           (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
  4783.  52h    WORD    secondary (L2) cache control register
  4784.  54h  2 BYTEs    ???
  4785.  56h    WORD    DRAM control register
  4786.  58h    BYTE    ???
  4787.  59h    BYTE    programmable attribute map (PAM) register 0
  4788.  5Ah  6 BYTEs    programmable attribute map (PAM) registers 1-6
  4789.  60h  5 BYTEs    DRAM row boundary registers 0-4
  4790.  65h    BYTE    ???
  4791.  66h    BYTE    PIRQ route control register 0
  4792.  67h    BYTE    PIRQ route control register 1
  4793.  68h    BYTE    DRAM memory hole register
  4794.  69h    BYTE    top of memory
  4795.  6Ah  6 BYTEs    ???
  4796.  70h    BYTE    SMRAM control register
  4797.  71h 47 BYTEs    unused???
  4798.  A0h    BYTE    SMI control register
  4799.  A1h    BYTE    ???
  4800.  A2h    WORD    SMI enable register
  4801.  A4h    DWORD    system event enable
  4802.  A8h    BYTE    fast off timer register
  4803.  A9h    BYTE    ???
  4804.  AAh    WORD    SMI request register
  4805.  ACh    BYTE    clock throttle STPCLK# low timer
  4806.  ADh    BYTE    unused???
  4807.  AEh    BYTE    clock throttle STPCLK# high timer
  4808.  AFh    BYTE    ???
  4809.  B0h 80 BYTEs    unused???
  4810. SeeAlso: #0628,#0641,#0640
  4811.  
  4812. Bitfields for Intel 82425EX PCI control register:
  4813. Bit(s)    Description    (Table 0644)
  4814.  0    CPU-to-PCI byte merging
  4815.  1    CPU-to-PCI bursting enable
  4816.  2    PCI posted-write buffer enable
  4817.  4-3    subtractive decode sampling point
  4818.     00 slow
  4819.     01 typical
  4820.     10 fast
  4821.     11 reserved
  4822.  5    DRAM parity error enable
  4823.  6    target abort error enable
  4824.  7    reserved
  4825. SeeAlso: #0643,#0645,#0646,#0647
  4826.  
  4827. Bitfields for Intel 82425EX host device control register:
  4828. Bit(s)    Description    (Table 0645)
  4829.  0    HRDY# maximum signal sampling point
  4830.     0 slow timing
  4831.     1 fast timing
  4832.  1    HDEV# signal sampling point
  4833.     0 slow timing
  4834.     1 fast timing
  4835.  2    host device present
  4836.  7-3    reserved
  4837. SeeAlso: #0643,#0644
  4838.  
  4839. Bitfields for Intel 82425EX local-bus IDE control register:
  4840. Bit(s)    Description    (Table 0646)
  4841.  1-0    primary/secondary PCI IDE enable
  4842.     00 IDE disabled
  4843.     01 primary (ports 01F0h-01F7h,03F6,03F7h)
  4844.     10 secondary (ports 0170h-017Fh,0376h,0377h)
  4845.     11 reserved
  4846.  3-2    fast timing bank drive select 1
  4847.     bit 2 = drive 0 enabled
  4848.     bit 3 = drive 1 enabled
  4849.  5-4    IORDY sample point Enable Drive Select
  4850.     bit 4 = drive 0 enabled
  4851.     bit 5 = drive 1 enabled
  4852.  7-6    reserved
  4853.  9-8    IORDY sample point
  4854.     00 6 clocks
  4855.     01 5 clocks
  4856.     10 4 clocks
  4857.     11 3 clocks
  4858.  12-10    recover time (000 = 8 PCI clocks, 001 = 7, ..., 101 = 3, 110/111 = 3)
  4859.  15-13    reserved
  4860. SeeAlso: #0643,#0644
  4861.  
  4862. Bitfields for Intel 82425EX ISA I/O recovery timer register:
  4863. Bit(s)    Description    (Table 0647)
  4864.  1-0    16-bit I/O recovery time
  4865.     00 = 4 SYSCLKs
  4866.     01-11 = 1-3 SYSCLKs
  4867.  2    16-bit I/O recovery enable
  4868.  5-3    8-bit I/O recovery time
  4869.     000 = 8 SYSCLKs
  4870.     001-110 = 1-7 SYSCLKs
  4871.  6    8-bit I/O recovery select
  4872.  7    DMA reserved page register aliasing disable
  4873.     =0 ports 0090h-009Fh alias ports 0080h-008Fh
  4874.     =1 ports 0090h-009Fh forwarded to ISA bus
  4875. SeeAlso: #0643,#0644
  4876.  
  4877. Bitfields for Intel 82425EX part revision register:
  4878. Bit(s)    Description    (Table 0648)
  4879.  7-5    fabrication house identifier (read-only)
  4880.  4    E0000h-EFFFFh ISA-to-main-memory forwarding enabled
  4881.  3-0    revision ID (read-only)
  4882. SeeAlso: #0643,#0649
  4883.  
  4884. Bitfields for Intel 82425EX X-bus Chip Select A register:
  4885. Bit(s)    Description    (Table 0649)
  4886.  7    extended BIOS enabled at FFF80000h-FFFDFFFFh
  4887.  6    lower (E000h) BIOS enabled
  4888.  5    trigger IRQ13 on FERR#
  4889.  4    IRQ12 mouse function enabled
  4890.  3    reserved (0)
  4891.  2    BIOS memory write protect
  4892.  1    keyboard controller addresses (60h,62h,64h,66h) enabled
  4893.  0    RTC addresses (70h-77h) enabled
  4894. SeeAlso: #0643,#0648
  4895. --------X-1AB10B-----------------------------
  4896. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE
  4897.     AX = B10Bh
  4898.     BH = bus number
  4899.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4900.     DI = register number (0000h-00FFh)
  4901.     CL = byte to write
  4902. Return: CF clear if successful
  4903.     CF set on error
  4904.     AH = status (00h,87h) (see #0625)
  4905.     EAX, EBX, ECX, and EDX may be modified
  4906.     all other flags (except IF) may be modified
  4907. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4908.       interrupts if they were disabled before making the call
  4909.     the meanings of BL and BH on entry were exchanged between the initial
  4910.       drafts of the specification and final implementation
  4911. SeeAlso: AX=B108h,AX=B10Ch,AX=B10Dh,AX=B18Bh,INT 2F/AX=1684h/BX=304Ch
  4912. --------X-1AB10C-----------------------------
  4913. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD
  4914.     AX = B10Ch
  4915.     BH = bus number
  4916.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4917.     DI = register number (multiple of 2 less than 0100h)
  4918.     CX = word to write
  4919. Return: CF clear if successful
  4920.     CF set on error
  4921.     AH = status (00h,87h) (see #0625)
  4922.     EAX, EBX, ECX, and EDX may be modified
  4923.     all other flags (except IF) may be modified
  4924. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4925.       interrupts if they were disabled before making the call
  4926.     the meanings of BL and BH on entry were exchanged between the initial
  4927.       drafts of the specification and final implementation
  4928. SeeAlso: AX=B109h,AX=B10Bh,AX=B10Dh,AX=B18Ch,INT 2F/AX=1684h/BX=304Ch
  4929. --------X-1AB10D-----------------------------
  4930. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD
  4931.     AX = B10Dh
  4932.     BH = bus number
  4933.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4934.     DI = register number (multiple of 4 less than 0100h)
  4935.     ECX = dword to write
  4936. Return: CF clear if successful
  4937.     CF set on error
  4938.     AH = status (00h,87h) (see #0625)
  4939.     EAX, EBX, ECX, and EDX may be modified
  4940.     all other flags (except IF) may be modified
  4941. Notes:    this function may require up to 1024 byte of stack; it will not enable
  4942.       interrupts if they were disabled before making the call
  4943.     the meanings of BL and BH on entry were exchanged between the initial
  4944.       drafts of the specification and final implementation
  4945. SeeAlso: AX=B10Ah,AX=B10Bh,AX=B10Ch,AX=B18Dh,INT 2F/AX=1684h/BX=304Ch
  4946. --------X-1AB10EBX0000-----------------------
  4947. INT 1A - Intel PCI BIOS v2.1+ - GET IRQ ROUTING INFORMATION
  4948.     AX = B10Eh
  4949.     BX = 0000h
  4950.     DS = segment/selector for PCI BIOS data
  4951.         (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
  4952.         specified by BIOS32 services directory)
  4953.     ES:(E)DI -> IRQ routing table header (see #0666 at AX=B406h)
  4954. Return: CF clear if successful
  4955.         AH = 00h
  4956.         BX = bit map of IRQ channels permanently dedicated to PCI
  4957.         WORD ES:[DI] = size of returned data
  4958.     CF set on error
  4959.         AH = error code (59h) (see #0650)
  4960.         WORD ES:[DI] = required size of buffer
  4961. SeeAlso: AX=B10Fh,AX=B406h,INT 2F/AX=1684h/BX=304Ch
  4962. --------X-1AB10F-----------------------------
  4963. INT 1A - Intel PCI BIOS v2.1+ - SET PCI IRQ
  4964.     AX = B10Fh
  4965.     BH = bus number
  4966.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  4967.     CH = number of IRQ to connect
  4968.     CL = number of interrupt pin (0Ah=INTA# to 0Dh=INTD#) to reprogram
  4969.     DS = segment/selector for PCI BIOS data
  4970.         (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
  4971.         specified by BIOS32 services directory)
  4972. Return: CF clear if successful
  4973.         AH = 00h
  4974.     CF set on error
  4975.         AH = error code (59h) (see #0650)
  4976. Note:    assumes that the calling application has determined the IRQ routing
  4977.       topology (see AX=B10Eh), has ensured that the selected IRQ will not
  4978.       cause a conflict, and will update the interrupt line configuration
  4979.       register on all devices which currently use the IRQ line
  4980. SeeAlso: AX=B10Eh
  4981. --------X-1AB181-----------------------------
  4982. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK (32-bit)
  4983.     AX = B181h
  4984. Return: as for AX=B101h
  4985. SeeAlso: AX=B101h
  4986. --------X-1AB182-----------------------------
  4987. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE (32-bit)
  4988.     AX = B182h
  4989.     CX = device ID
  4990.     DX = vendor ID
  4991.     SI = device index (0-n)
  4992. Return: as for AX=B102h
  4993. SeeAlso: AX=B102h
  4994. --------X-1AB183-----------------------------
  4995. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE (32-bit)
  4996.     AX = B183h
  4997.     ECX = class code (bits 23-0)
  4998.     SI = device index (0-n)
  4999. Return: as for AX=B103h
  5000. SeeAlso: AX=B103h
  5001. --------X-1AB186-----------------------------
  5002. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS (32-bit)
  5003.     AX = B186h
  5004.     BH = bus number
  5005.     EDX = Special Cycle data
  5006. Return: as for AX=B106h
  5007. Note:    the meanings of BL and BH on return were exchanged between the initial
  5008.       drafts of the specification and final implementation
  5009. SeeAlso: AX=B106h
  5010. --------X-1AB188-----------------------------
  5011. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE (32-bit)
  5012.     AX = B188h
  5013.     BH = bus number
  5014.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5015.     DI = register number (0000h-00FFh)
  5016. Return: as for AX=B108h
  5017. Note:    the meanings of BL and BH on return were exchanged between the initial
  5018.       drafts of the specification and final implementation
  5019. SeeAlso: AX=B108h
  5020. --------X-1AB189-----------------------------
  5021. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD (32-bit)
  5022.     AX = B189h
  5023.     BH = bus number
  5024.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5025.     DI = register number (0000h-00FFh)
  5026. Return: as for AX=B109h
  5027. Note:    the meanings of BL and BH on return were exchanged between the initial
  5028.       drafts of the specification and final implementation
  5029. SeeAlso: AX=B109h
  5030. --------X-1AB18A-----------------------------
  5031. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD (32-bit)
  5032.     AX = B18Ah
  5033.     BH = bus number
  5034.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5035.     DI = register number (0000h-00FFh)
  5036. Return: as for AX=B10Ah
  5037. Note:    the meanings of BL and BH on return were exchanged between the initial
  5038.       drafts of the specification and final implementation
  5039. SeeAlso: AX=B10Ah
  5040. --------X-1AB18B-----------------------------
  5041. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE (32-bit)
  5042.     AX = B18Bh
  5043.     BH = bus number
  5044.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5045.     DI = register number (0000h-00FFh)
  5046.     CL = byte to write
  5047. Return: as for AX=B10Bh
  5048. Note:    the meanings of BL and BH on return were exchanged between the initial
  5049.       drafts of the specification and final implementation
  5050. SeeAlso: AX=B10Bh
  5051. --------X-1AB18C-----------------------------
  5052. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD (32-bit)
  5053.     AX = B18Ch
  5054.     BH = bus number
  5055.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5056.     DI = register number (multiple of 2 less than 0100h)
  5057.     CX = word to write
  5058. Return: as for AX=B10Ch
  5059. Note:    the meanings of BL and BH on return were exchanged between the initial
  5060.       drafts of the specification and final implementation
  5061. SeeAlso: AX=B10Ch
  5062. --------X-1AB18D-----------------------------
  5063. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD (32-bit)
  5064.     AX = B18Dh
  5065.     BH = bus number
  5066.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  5067.     DI = register number (multiple of 4 less than 0100h)
  5068.     ECX = dword to write
  5069. Return: as for AX=B10Dh
  5070. Note:    the meanings of BL and BH on return were exchanged between the initial
  5071.       drafts of the specification and final implementation
  5072. SeeAlso: AX=B10Dh
  5073. --------X-1AB400-----------------------------
  5074. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - INSTALLATION CHECK
  5075.     AX = B400h
  5076. Return: CF clear if installed
  5077.     AX = 0000h if installed
  5078.         BH = ACFG major version (02h)
  5079.         BL = ACFG minor version (08h)
  5080.         CX = ??? (0002h)
  5081.         EDX = 47464341h ('GFCA', which is byte-swapped 'ACFG')
  5082.         SI = ??? (001Fh)
  5083. SeeAlso: AX=B401h,AX=B402h,AX=B403h,AX=B404h,AX=B405h,AX=B406h,AX=B407h
  5084. SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
  5085.  
  5086. (Table 0650)
  5087. Values for Intel Plug-and-Play AUTO-CONFIGURATION error codes:
  5088.  0000h    successful
  5089.  0001h    specified action could not be completed
  5090.  0051h    ???
  5091.  0055h    unable to read/write configuration table from/to nonvolatile storage
  5092.  0056h    not a valid configuration table or wrong table version
  5093.  0059h    buffer too small
  5094.  0081h    unsupported function
  5095.  FFFFh    ???
  5096. SeeAlso: #F053
  5097. --------X-1AB401-----------------------------
  5098. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET DEFAULT CONFIG TABLE
  5099.     AX = B401h
  5100. Return: CF clear if successful
  5101.         AX = 0000h
  5102.         BX = maximum size of configuration table in bytes
  5103.         CX = required configuration buffer size
  5104.         (includes scratch space used by ACFG code)
  5105.         EDI = linear/physical address of ESCD table (see #0651)
  5106.     CF set on error
  5107.         AX = error code (see #0650)
  5108. SeeAlso: AX=B400h,AX=B402h,@xxxxh:xxxxh"Plug-and-Play"
  5109.  
  5110. Format of Intel Plug-and-Play Extended System Configuration Data table:
  5111. Offset    Size    Description    (Table 0651)
  5112.  00h    WORD    total length of this table
  5113.  02h  4 BYTEs    signature "ACFG"
  5114.  06h    BYTE    minor version number
  5115.  07h    BYTE    major version number (currently 02h)
  5116.  08h    BYTE    number of boards listed in the configuration data
  5117.  09h  3 BYTEs    reserved (00h)
  5118.  0Ch    var    board data
  5119.     WORD    checksum
  5120. Notes:    this table contains information about the standard devices in the
  5121.       system, such as serial ports, parallel ports, etc.  For each device,
  5122.       it includes at least the I/O port address (03F8h,02F8h,0378h,etc).
  5123.     the sum of all words in the table, including the checksum field (with
  5124.       implied zero padding if the length is odd), must equal 0000h
  5125. SeeAlso: #0652
  5126.  
  5127. Format of Extended System Configuration Data Board Header:
  5128. Offset    Size    Description    (Table 0652)
  5129.  00h    WORD    length of this header in bytes
  5130.  02h    BYTE    slot number
  5131.         00h motherboard
  5132.         01h-0Fh ISA/EISA
  5133.         10h-40h    PCI
  5134.  03h    BYTE    reserved (00h)
  5135. SeeAlso: #0651,#0653
  5136.  
  5137. Format of Extended System Configuration Data Freeform Board Header:
  5138. Offset    Size    Description    (Table 0653)
  5139.  00h  4 BYTEs    signature "ACFG"
  5140.  04h    BYTE    minor version number
  5141.  05h    BYTE    major version number (currently 02h)
  5142.  06h    BYTE    board type
  5143.         01h ISA
  5144.         02h EISA
  5145.         04h PCI
  5146.         08h PCMCIA
  5147.         10h PnPISA
  5148.         20h MCA
  5149.  07h    BYTE    reserved (00h)
  5150.  08h    WORD    disabled functions (bit N set = function N disabled)
  5151.  0Ah    WORD    configuration error functions
  5152.  0Ch    WORD    reconfigurable functions (bit N set = function N reconfig'able)
  5153.  0Eh  2 BYTEs    reserved (00h)
  5154. SeeAlso: #0656,#0657
  5155.  
  5156. Format of Extended System Configuration Data Freeform PCI Device Data:
  5157. Offset    Size    Description    (Table 0654)
  5158.  00h    BYTE    PCI bus number
  5159.  01h    BYTE    PCI device and function number
  5160.  02h    WORD    PCI device identifier
  5161.  04h    WORD    PCI vendor ID (see #0629)
  5162.  06h  2 BYTEs    reserved (00h)
  5163. SeeAlso: #0654,#0657
  5164.  
  5165. Format of Extended System Configuration Data Freeform PnP ISA Board ID:
  5166. Offset    Size    Description    (Table 0655)
  5167.  00h    DWORD    vendor ID (EISA device identifier)
  5168.  04h    DWORD    serial number
  5169. SeeAlso: #0655,#0656
  5170.  
  5171. Format of Extended System Configuration Data PnP ISA ECD Extension Function:
  5172. Offset    Size    Description    (Table 0656)
  5173.  00h    WORD    001Eh (length of this structure)
  5174.  02h    BYTE    01h (selection size)
  5175.  03h    BYTE    00h (selection data)
  5176.  04h    BYTE    C0h (function information byte) (see #0659)
  5177.  05h    BYTE    18h (size of following free-format data)
  5178.  06h 16 BYTEs    freeform board header (see #0653)
  5179.  16h  8 BYTEs    Plug-and-Play board ID (see #0655)
  5180. Note:    ECD = Extended Configuration Data; this structure must be the last
  5181.       "function" for a particular ISA Plug-and-Play board
  5182. SeeAlso: #0657
  5183.  
  5184. Format of Extended System Configuration Data PCI ECD Extension Function:
  5185. Offset    Size    Description    (Table 0657)
  5186.  00h    WORD    length of this structure (at least 001Eh, up to 0056h)
  5187.  02h    BYTE    01h (selection size)
  5188.  03h    BYTE    00h (selection data)
  5189.  04h    BYTE    C0h (function information byte) (see #0659)
  5190.  05h    BYTE    size of following free-format data (at least 18h, max 50h)
  5191.  06h 16 BYTEs    freeform board header (see #0653)
  5192.  16h 8N BYTEs    PCI board ID (see #0654) for one to eight boards
  5193. Notes:    ECD = Extended Configuration Data; this structure must be the last
  5194.       "function" for a particular PCI board
  5195.     AMI BIOS v1.00.05.AX1 sets the length field to 001Ch for entries with
  5196.       a single board ID, apparently treating the field as the length of
  5197.       the remainder of the structure instead of the full structure's length
  5198. SeeAlso: #0656
  5199.  
  5200. Bitfields for EISA ID and Slot Information:
  5201. Bit(s)    Description    (Table 0658)
  5202.  3-0    selector among duplicate configuration file names (0000 if no dups)
  5203.  5-4    slot type
  5204.     00 expansion slot
  5205.     01 embedded
  5206.     10 virtual slot
  5207.     11 reserved
  5208.  6    ID is readable
  5209.  7    duplicate IDs present
  5210.  8    board can be disabled
  5211.  9    IOCHKERR supported
  5212.  10    board or entries locked
  5213.  13-11    reserved
  5214.  14    board does not have or need configuration file
  5215.  15    configuration not complete
  5216. SeeAlso: #0659
  5217.  
  5218. Bitfields for EISA Function Information:
  5219. Bit(s)    Description    (Table 0659)
  5220.  0    subtype data
  5221.  1    memory information (see #0660)
  5222.  2    IRQ information (see #0662)
  5223.  3    DMA information (see #0663)
  5224.  4    port range information (see #0664)
  5225.  5    port initialization data (see #0665)
  5226.  6    free form data
  5227.  7    function disabled
  5228. SeeAlso: #0656,#0657,#0658
  5229.  
  5230. Format of EISA Memory Information:
  5231. Offset    Size    Description    (Table 0660)
  5232.  00h    WORD    memory information flags (see #0661)
  5233.  02h  3 BYTEs    high 24 bits of memory start address (LSB first)
  5234.  05h    WORD    memory size in K (0000h = 65536K)
  5235. SeeAlso: #0659
  5236.  
  5237. Bitfields for EISA Memory Information Flags:
  5238. Bit(s)    Description    (Table 0661)
  5239.  0    writable (RAM rather than ROM)
  5240.  1    cached
  5241.  2    write-back cache rather than write-through
  5242.  4-3    memory type
  5243.     00 system
  5244.     01 expantion
  5245.     10 virtual
  5246.     11 other
  5247.  5    shared
  5248.  6    reserved (0)
  5249.  7    more entries follow
  5250.  9-8    memory width
  5251.     00 byte
  5252.     01 word
  5253.     10 dword
  5254.     11 reserved
  5255.  11-10    decoded address lines
  5256.     00 = 20
  5257.     01 = 24
  5258.     10 = 32
  5259.     11 reserved
  5260.  15-12    reserved (0)
  5261. SeeAlso: #0660
  5262.  
  5263. Bitfields for EISA IRQ Information:
  5264. Bit(s)    Description    (Table 0662)
  5265.  3-0    IRQ number
  5266.  4    reserved (0)
  5267.  5    IRQ triggering (0 = edge, 1 = level)
  5268.  6    IRQ is shareable
  5269.  7    more entries follow
  5270.  15-8    reserved (0)
  5271. SeeAlso: #0659
  5272.  
  5273. Bitfields for EISA DMA Information:
  5274. Bit(s)    Description    (Table 0663)
  5275.  2-0    DMA channel number
  5276.  5-3    reserved (0)
  5277.  6    shareable
  5278.  7    more entries follow
  5279.  9-8    reserved
  5280.  11-10    DMA transfer size
  5281.     00 byte
  5282.     01 word
  5283.     10 dword
  5284.     11 word, but count in bytes
  5285.  13-12    DMA timing
  5286.     00 ISA-compatible
  5287.     01 EISA type "A"
  5288.     10 EISA type "B"
  5289.     11 EISA type "C"/"F" (burst)
  5290.  15-14    reserved (0)
  5291. SeeAlso: #0659
  5292.  
  5293. Format of EISA Port Range Information:
  5294. Offset    Size    Description    (Table 0664)
  5295.  00h    BYTE    port description
  5296.         bits 4-0: number of sequential ports
  5297.         bit 5 reserved (0)
  5298.         bit 6: shareable
  5299.         bit 7: more entries follow
  5300.  01h    WORD    I/O port address
  5301. SeeAlso: #0659,#0665
  5302.  
  5303. Format of EISA Port Initialization Data:
  5304. Offset    Size    Description    (Table 0665)
  5305.  00h    BYTE    flags
  5306.         bits 1-0: port size
  5307.             00 byte
  5308.             01 word
  5309.             10 dword
  5310.             11 reserved
  5311.         bit 2: masked write
  5312.         bits 6-3 reserved (0)
  5313.         bit 7: more entries follow
  5314.  01h    ???
  5315. SeeAlso: #0659,#0664
  5316. --------X-1AB402-----------------------------
  5317. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - COPY AND VERIFY CONFIG TABLE
  5318.     AX = B402h
  5319.     DS:SI -> configuration table (see #0651)
  5320.     ES:DI -> buffer for copy of configuration table
  5321. Return: CF clear if successful
  5322.         AX = 0000h
  5323.     CF set on error
  5324.         AX = error code (0055h,0056h) (see #0650)
  5325. Note:    the buffer pointed at by ES:DI must be at least as large as the
  5326.       maximum configuration table size reported by AX=B401h
  5327. SeeAlso: AX=B400h,AX=B401h,AX=B403h
  5328. --------X-1AB403-----------------------------
  5329. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - STORE ESCD TABLE IN NVRAM
  5330.     AX = B403h
  5331.     DS:SI -> configuration table (see #0651)
  5332. Return: CF clear if successful
  5333.         AX = 0000h
  5334.     CF set on error
  5335.         AX = error code (0055h) (see #0650)
  5336. Note:    sets the configuration table's checksum field, then copies the table
  5337.       into nonvolatile storage (i.e. FlashROM)
  5338. SeeAlso: AX=B400h,AX=B402h
  5339. --------X-1AB404-----------------------------
  5340. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET AVAILABLE IRQs???
  5341.     AX = B404h
  5342.     BX = bitmap of IRQs being used???
  5343. Return: CF clear if successful
  5344.         AX = 0000h
  5345.         BX = available for ISA??? (not(BXin) & A127h)
  5346.         CX = available for on-board I/O??? (not(BXin) & 40D8h)
  5347.         DX = available for PCI??? (either not(BXin) & 0E00h or 0000h)
  5348.     CF set on error
  5349.         AX = error code (0051h) (see #0650)
  5350. Note:    the various vector types have also been called "shareable",
  5351.       "unshareable", and "avoidable"
  5352. SeeAlso: AX=B400h,INT 2F/AX=1684h/BX=304Ch
  5353. --------X-1AB405-----------------------------
  5354. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET ???
  5355.     AX = B405h
  5356. Return: AX = ??? (0008h)
  5357. SeeAlso: AX=B400h
  5358. --------X-1AB406-----------------------------
  5359. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET PCI IRQ ROUTING TABLE
  5360.     AX = B406h
  5361.     ES:DI -> IRQ routing table header (see #0666)
  5362. Return: CF clear if successful
  5363.         AX = 0000h
  5364.         WORD ES:[DI] = size of returned data
  5365.     CF set on error
  5366.         AX = error code (0059h) (see #0650)
  5367.         WORD ES:[DI] = required size of buffer
  5368. SeeAlso: AX=B400h,AX=B404h,AX=B10Eh,INT 2F/AX=1684h/BX=304Ch
  5369.  
  5370. Format of Intel Plug-and-Play AUTO-CONFIGURATION PCI IRQ routing header:
  5371. Offset    Size    Description    (Table 0666)
  5372.  00h    WORD    length of IRQ routing table buffer
  5373.  02h    DWORD    -> IRQ routing table array buffer (see #0667)
  5374.  
  5375. Format of Intel Plug-and-Play ACFG PCI IRQ routing table entry [array]:
  5376. Offset    Size    Description    (Table 0667)
  5377.  00h    BYTE    PCI bus number
  5378.  01h    BYTE    PCI device number (bits 7-3)
  5379.  02h    BYTE    link value for INTA#
  5380.         (if non-zero, wire-ORed together with any other PCI interrupts
  5381.           with same link value)
  5382.  03h    WORD    IRQ connectivity bit map for INTA#
  5383.         (standard AT IRQs to which PCI interrupt can be routed)
  5384.  05h    BYTE    link value for INTB#
  5385.  06h    WORD    IRQ connectivity bit map for INTB#
  5386.  08h    BYTE    link value for INTC#
  5387.  09h    WORD    IRQ connectivity bit map for INTC#
  5388.  0Bh    BYTE    link value for INTD#
  5389.  0Ch    WORD    IRQ connectivity bit map for INTD#
  5390.  0Eh    BYTE    (PCI BIOS v2.1+) device slot number (00h = motherboard)
  5391.  0Fh    BYTE    reserved
  5392. Note:    each item in the routing table corresponds to a motherboard PCI
  5393.       device or PCI slot
  5394. SeeAlso: #0666
  5395. --------X-1AB407-----------------------------
  5396. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
  5397.     AX = B407h
  5398.     EDX = length of ???
  5399.     EDI = physical address of ???
  5400. Return: CF clear if successful
  5401.         AX = 0000h
  5402.         EDX = ???
  5403.         EDI = ???
  5404.     CF set on error
  5405.         AX = error code (FFFFh) (see #0650)
  5406. Notes:    returns error if EDI < 000C0000h or EDI+EDX > 00100000h
  5407.     seems to force EDI and EDX to align to 16K boundaries
  5408. SeeAlso: AX=B400h
  5409. --------X-1AB4-------------------------------
  5410. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - 32-BIT API
  5411.     AH = B4h
  5412.     AL = function (80h-87h)
  5413.     further details not yet available
  5414. Note:    these functions are 32-bit versions of functions 00h-07h
  5415. --------c-1AC0-------------------------------
  5416. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  5417.     AH = C0h
  5418. Return: (see AH=A0h)
  5419. Notes:    this call is identical to AH=A0h
  5420.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5421.       as that is a licensed version of Disk Spool II
  5422. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  5423. --------U-1ACCCCBXCCCC-----------------------
  5424. INT 1A U - DATEFIX - INSTALLATION CHECK
  5425.     AX = CCCCh
  5426.     BX = CCCCh
  5427.     CX = 0000h
  5428. Return: CX = CCCCh if installed
  5429.         ES:BX -> original interrupt handler
  5430. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  5431.       machines, where the realtime clock's calendar wraps after 1991
  5432. SeeAlso: AH=FEh,AH=FFh"AT&T"
  5433. --------c-1AD0-------------------------------
  5434. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  5435.     AH = D0h
  5436.     AL = function code
  5437.         01h enable spooler and despooler
  5438.         02h enable spooler only
  5439.         03h enable despooler at beginning of file
  5440.         04h disable the despooler
  5441.         05h disable the despooler and spooler
  5442.         06h clear the spool file
  5443.         08h inhibit the popup menu
  5444.         09h enable the popup menu
  5445.         0Ah ??? (called by Disk Spool's INT 21 handler)
  5446.         0Bh disable the spooler
  5447.         0Ch start despooler after last successfully printed document
  5448.         0Dh start despooler at the exact point where it last left off
  5449.         0Eh pop up the menu
  5450.         0Fh ???
  5451.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  5452.             when a program terminates)
  5453.         14h ???
  5454.         15h delete despool file and reset ???
  5455.         16h ??? (writes something to unknown file)
  5456.         17h ??? (writes something to despool file, then reads something
  5457.             else and ???)
  5458.         18h ??? (reads something from despool file, and then ???)
  5459.         19h ??? (creates/truncates spool file)
  5460.         20h clear file pointed to by the despooler
  5461.         21h ??? (writes something to unknown file)
  5462.         22h ??? (writes something to spool file if spooler/despooler using
  5463.             same file)
  5464.         23h ??? (opens/creates unknown file, then ???)
  5465.         30h ???
  5466.         31h ???
  5467.         32h beep
  5468.         33h append CRLF to spool file???
  5469.         34h ???
  5470.         35h ???
  5471.         36h ???
  5472.         37h append CRLF to spool file and start a new spool file???
  5473.         38h ???
  5474.         40h ??? (v4.05)
  5475.         41h ??? (v4.05)
  5476.         51h ??? (called by Disk Spool's INT 21 handler)
  5477.         52h ??? (called by Disk Spool's INT 21 handler)
  5478.         57h ???
  5479.         5Ah ??? (v4.05)
  5480.         5Bh ??? (v4.05)
  5481.         5Ch ??? (v4.05)
  5482. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5483.       as that is a licensed version of Disk Spool II
  5484. SeeAlso: AH=A0h,AH=ADh
  5485. --------c-1AE0-------------------------------
  5486. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  5487.     AH = E0h
  5488.     AL = subfunction
  5489.         01h enable spooler
  5490.         02h disable spooler
  5491.         03h enable despooler
  5492.         04h disable despooler
  5493.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5494. Return: AH = status
  5495.         00h successful
  5496.         F0h printer port not managed by Disk Spool II
  5497.         FFH failed
  5498. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5499.       as that is a licensed version of Disk Spool II
  5500. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  5501. --------c-1AE1-------------------------------
  5502. INT 1A - Disk Spool II v4.0x - GET STATUS
  5503.     AH = E1h
  5504.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5505. Return: AH = status
  5506.         00h successful
  5507.         CL = despooler state (00h disabled, 41h enabled)
  5508.         CH = spooler state (00h disabled, 41h enabled)
  5509.         DL = despooler activity (00h standing by, 41h printing)
  5510.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  5511.             or AutoDespool enabled)
  5512.         ES:SI -> ASCIZ name of current despool file
  5513.         ES:DI -> 3-byte file extension used by Disk Spool II
  5514.         F0h printer port not managed by Disk Spool II
  5515. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5516.       as that is a licensed version of Disk Spool II
  5517. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  5518. --------U-1AE11B-----------------------------
  5519. INT 1A - TheGrab v4.60 - ???
  5520.     AX = E11Bh
  5521.     ???
  5522. Return: ??? (may destroy all registers)
  5523. SeeAlso: AX=E11Dh
  5524. --------U-1AE11D-----------------------------
  5525. INT 1A - TheGrab v4.60 - INSTALLATION CHECK
  5526.     AX = E11Dh
  5527. Return: ES:DI -> signature block (see #0668) if installed
  5528.         CX = length of signature block (000Fh)
  5529. Program: TheGrab is a resident ANSI screen grabber bundled with TheDraw
  5530. SeeAlso: AX=E11Bh
  5531.  
  5532. Format of TheGrab signature block:
  5533. Offset    Size    Description    (Table 0668)
  5534.  00h    BYTE    08h
  5535.  01h  8 BYTEs    ASCIZ "THEGRAB"
  5536.  09h  6 BYTEs    ??? (zeros)
  5537. --------c-1AE2-------------------------------
  5538. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  5539.     AH = E2h
  5540.     AL = which
  5541.         01h first
  5542.         02h next (can only call after "first")
  5543.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5544. Return: AH = status
  5545.         00h successful
  5546.         ES:BX -> ASCIZ filename
  5547.         F0h no (more) spool files
  5548.         FFh failed
  5549. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5550.       as that is a licensed version of Disk Spool II
  5551. SeeAlso: AH=E0h,AH=E1h
  5552. --------c-1AE301-----------------------------
  5553. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  5554.     AX = E301h
  5555.     ES:BX -> ASCIZ filename (max 32 chars)
  5556. Return: AH = status
  5557.         00h successful
  5558.         ES:SI -> spool file status record (see #0669)
  5559.         F0h not a spool file
  5560.         FFh failed
  5561. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5562.       as that is a licensed version of Disk Spool II
  5563. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  5564.  
  5565. Format of Disk Spool II spool file status record:
  5566. Offset    Size    Description    (Table 0669)
  5567.  00h    BYTE    hour of creation or last update
  5568.  01h    BYTE    minute of creation or last update
  5569.  02h    BYTE    year-1980 of creation or last update
  5570.  03h    BYTE    month of creation or last update
  5571.  04h    BYTE    day of creation or last update
  5572.  05h    BYTE    total number of copies to print
  5573.  06h    BYTE    number of copies already printed
  5574.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5575.  08h    BYTE    save status (00h delete after printing, 01h save)
  5576.  09h    BYTE    file status
  5577.         01h done printing, but being saved
  5578.         02h on hold
  5579.         03h queued for printing
  5580.         04h being spooled
  5581.         05h being despooled (i.e. printed)
  5582.  0Ah 16 BYTEs    ASCIZ description
  5583.  1Ah  2 WORDs    file size in bytes (high,low)
  5584.  1Eh  2 WORDs    bytes left to print (high,low)
  5585. --------c-1AE302-----------------------------
  5586. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  5587.     AX = E302h
  5588.     ES:BX -> ASCIZ filename (max 32 chars)
  5589.     ES:SI -> spool file status record (see #0669)
  5590. Return: AH = status
  5591.         00h successful
  5592.         F0h not a spool file
  5593.         FFh failed
  5594. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5595.       as that is a licensed version of Disk Spool II
  5596. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  5597. --------c-1AE401-----------------------------
  5598. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  5599.     AX = E401h
  5600.     ES:BX -> ASCIZ filename (max 32 chars)
  5601.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5602. Return: AH = status
  5603.         00h successful
  5604.         FFh failed
  5605. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5606.       as that is a licensed version of Disk Spool II
  5607. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  5608. --------c-1AE402-----------------------------
  5609. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  5610.     AX = E402h
  5611.     ES:BX -> ASCIZ filename (max 32 chars)
  5612.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5613. Return: AH = status
  5614.         00h successful
  5615.         FFh failed
  5616. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5617.       as that is a licensed version of Disk Spool II
  5618. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  5619. --------c-1AE5-------------------------------
  5620. INT 1A U - Emulaser ELSPL.COM - ???
  5621.     AH = E5h
  5622.     ???
  5623. Return: ???
  5624. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  5625.       as part of Vertisoft's Emulaser PostScript emulator
  5626. SeeAlso: AH=A0h,INT 17/AH=03h
  5627. --------c-1AEE-------------------------------
  5628. INT 1A U - Disk Spool II v4.05 - ???
  5629.     AH = EEh
  5630.     AL = printer port???
  5631.     ???
  5632. Return: ???
  5633. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  5634.       as that is a licensed version of Disk Spool II
  5635. SeeAlso: AH=E1h
  5636. --------U-1AF7-------------------------------
  5637. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  5638.     AH = F7h
  5639. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
  5640.       system time to correct for clock drift
  5641. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  5642.       version 1.1, but F7h is the function called by transient portion
  5643. SeeAlso: AH=F8h,AH=FFh"RighTime"
  5644. --------U-1AF8-------------------------------
  5645. INT 1A - RighTime v1.1 - ENABLE
  5646.     AH = F8h
  5647. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
  5648.       system time to correct for clock drift
  5649. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  5650.       TeSseRact program identifier based on its current state: "RighTime"
  5651.       when enabled, "RighTim"F7h when disabled.
  5652. SeeAlso: AH=F7h,AH=FFh"RighTime"
  5653. --------b-1AFE-------------------------------
  5654. INT 1A - AT&T 6300 - READ TIME AND DATE
  5655.     AH = FEh
  5656. Return: BX = day count (0 = Jan 1, 1984)
  5657.     CH = hour
  5658.     CL = minute
  5659.     DH = second
  5660.     DL = hundredths
  5661. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  5662. --------b-1AFF-------------------------------
  5663. INT 1A - AT&T 6300 - SET TIME AND DATE
  5664.     AH = FFh
  5665.     BX = day count (0 = Jan 1, 1984)
  5666.     CH = hour
  5667.     CL = minute
  5668.     DH = second
  5669.     DL = hundredths
  5670. Return: ???
  5671. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh"DATE",INT 21/AH=2Dh
  5672. --------U-1AFF-------------------------------
  5673. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  5674.     AH = FFh
  5675. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
  5676.       system time to correct for clock drift
  5677. Note:    upon being permanently disabled, RighTime closes the file handle
  5678.       referencing its executable (which is updated with time correction
  5679.       information every two minutes while RighTime is enabled).
  5680. --------s-1AFF00-----------------------------
  5681. INT 1A - SND - INSTALLATION CHECK???
  5682.     AX = FF00h
  5683. Return: AL = version??? (02h)
  5684.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  5685. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  5686.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  5687.       command set
  5688. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  5689. --------s-1AFF01-----------------------------
  5690. INT 1A - SND - PAUSE
  5691.     AX = FF01h
  5692.     DX = number of clock ticks to delay
  5693. Return: AH = status
  5694.         00h successful
  5695.         01h SND busy
  5696. Notes:    if successful, execution returns to the caller after the delay expires;
  5697.       if SND is busy, execution returns immediately
  5698.     the IC v2.0 implementation of this API makes no special allowance for
  5699.       time rollover at midnight, which can cause the delay to be over one
  5700.       hour if this function is called just before the BIOS time count
  5701.       rolls over and the delay extends into the next day
  5702. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  5703. SeeAlso: INT E0/CL=BDh
  5704. --------s-1AFF02-----------------------------
  5705. INT 1A - SND - START SOUND
  5706.     AX = FF02h
  5707.     DX = frequency in Hertz (14h-FFFFh)
  5708. Return: AH = status
  5709.         00h successful
  5710.         01h SND busy
  5711. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  5712. --------s-1AFF03-----------------------------
  5713. INT 1A - SND - STOP SOUND
  5714.     AX = FF03h
  5715. Return: AH = status
  5716.         00h successful
  5717.         01h busy
  5718. Note:    turns off any sound currently being emitted by the PC's speaker unless
  5719.       SND is currently busy processing an API call (this includes
  5720.       background music).  Use AX=FF05h to stop the sound even if an API
  5721.       call is in progress.
  5722. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  5723. --------s-1AFF04-----------------------------
  5724. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  5725.     AX = FF04h
  5726.     DS:DX -> ASCIZ music string
  5727. Return: AH = status
  5728.         00h successful (music begins playing in background)
  5729.         01h busy
  5730. Note:    the music string accepted by SND is not the same as that accepted by
  5731.       BASIC and other programs which process music strings
  5732. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  5733. --------s-1AFF05-----------------------------
  5734. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  5735.     AX = FF05h
  5736. Return: AH = 00h (successful)
  5737. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  5738.       SND is currently busy, such as playing background music
  5739. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  5740. --------B-1B---------------------------------
  5741. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  5742. Desc:    this interrupt is automatically called when INT 09 determines that
  5743.       Control-Break has been pressed
  5744. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  5745.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  5746. SeeAlso: INT 23
  5747. --------B-1C---------------------------------
  5748. INT 1C - TIME - SYSTEM TIMER TICK
  5749. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  5750.       handler
  5751. Notes:    this is the preferred interrupt to chain when a program needs to be
  5752.       invoked regularly
  5753.     not available on NEC 9800-series PCs
  5754. SeeAlso: INT 08,INT E2"PC Cluster"
  5755. --------B-1D---------------------------------
  5756. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  5757. Note:    the default parameter table (see #0670) is located at F000h:F0A4h for
  5758.       100% compatible BIOSes
  5759. SeeAlso: INT 10/AH=00h
  5760.  
  5761. Format of video parameters:
  5762. Offset    Size    Description    (Table 0670)
  5763.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  5764.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  5765.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  5766.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  5767.  40h    WORD    bytes in video buffer for modes 00h and 01h (0800h)
  5768.  42h    WORD    bytes in video buffer for modes 02h and 03h (1000h)
  5769.  44h    WORD    bytes in video buffer for modes 04h and 05h (4000h)
  5770.  46h    WORD    bytes in video buffer for mode 06h (4000h)
  5771.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  5772.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  5773. Note:    QEMM v7.5 Stealth appears to copy only the first 40h bytes of this
  5774.       table into always-accessible memory
  5775. --------B-1E---------------------------------
  5776. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  5777. Notes:    the default parameter table (see #0671) is located at F000h:EFC7h for
  5778.       100% compatible BIOSes
  5779.     if the table is changed, INT 13/AH=00h should be called to ensure that
  5780.       the floppy-disk controller is appropriately reprogrammed
  5781. SeeAlso: INT 13/AH=0Fh,INT 41"HARD DISK 0",INT 4D/AH=0Ah
  5782.  
  5783. Format of diskette parameter table:
  5784. Offset    Size    Description    (Table 0671)
  5785.  00h    BYTE    first specify byte
  5786.         bits 7-4: step rate
  5787.         bits 3-0: head unload time (0Fh = 240 ms)
  5788.  01h    BYTE    second specify byte
  5789.         bits 7-1: head load time (01h = 4 ms)
  5790.         bit    0: non-DMA mode (always 0)
  5791.  02h    BYTE    delay until motor turned off (in clock ticks)
  5792.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  5793.  04h    BYTE    sectors per track
  5794.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  5795.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  5796.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  5797.  08h    BYTE    format filler byte (default F6h)
  5798.  09h    BYTE    head settle time in milliseconds
  5799.  0Ah    BYTE    motor start time in 1/8 seconds
  5800. SeeAlso: #2481 at INT 4D/AH=09h
  5801. --------B-1F---------------------------------
  5802. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  5803. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  5804.       character 80h-FFh
  5805. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  5806.       compatible BIOSes
  5807. SeeAlso: INT 10/AX=5000h,INT 43
  5808. --------b-1F12-------------------------------
  5809. INT 1F U - C&T "SuperState" BIOS - POWER OFF
  5810.     AH = 12h
  5811. Return: none
  5812. Note:    POWER OFF
  5813. --------b-1F17-------------------------------
  5814. INT 1F U - C&T "SuperState" BIOS - EXECUTE FAR PROC ROUTINE ON SuperState
  5815.     AH = 17h
  5816.     ES:DI -> far procedure
  5817. Return: all registers except AH,ES,DI
  5818. Note:    You can change the BIOS area (F000h:0000h - F000h:FFFFh) only through
  5819.       this function
  5820. --------b-1F19-------------------------------
  5821. INT 1F U - C&T "SuperState" BIOS - ENABLE AUTO WAKEUP AND SET TIME AND DATE
  5822.     AH = 19h
  5823.     AL = hour in BCD
  5824.     BH = minutes in BCD
  5825.     BL = seconds in BCD
  5826.     CH = year century in BCD (must be 19h)
  5827.     CL = year low in BCD
  5828.     DH = month in BCD
  5829.     DL = date in BCD
  5830. Return: CF clear
  5831. --------b-1F1C-------------------------------
  5832. INT 1F U - C&T "SuperState" BIOS - SET SUSPEND TIMEOUT
  5833.     AH = 1Ch
  5834.     BX = sec until suspend starts
  5835. Return: None
  5836. --------b-1F1D-------------------------------
  5837. INT 1F U - C&T "SuperState" BIOS - SET SLEEP TIMEOUT
  5838.     AH = 1Dh
  5839.     BX = sec until sleep starts
  5840. Return: None
  5841. --------J-1F90-------------------------------
  5842. INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
  5843.     AH = 90h
  5844.     ES:BX -> global descriptor table (see #0403 at INT 15/AH=87h)
  5845.     CX = number of bytes to copy
  5846.     SI = 0000h
  5847.     DI = 0000h
  5848. Return: CF clear if successful
  5849.     CF set on error
  5850.     ???
  5851. SeeAlso: INT 15/AH=87h
  5852. --------b-1FF5--BLFA-------------------------
  5853. INT 1F U - C&T "SuperState" BIOS - REQUEST PASSWORD INPUT
  5854.     AH = F5h
  5855.     BL = FAh
  5856. Return: none
  5857. Note:    this function will not return until the correct password is entered
  5858. SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
  5859. --------b-1FF5--BLFD-------------------------
  5860. INT 1F U - C&T "SuperState" BIOS - ENCRYPT PASSWORD
  5861.     AH = F5h
  5862.     BL = FDh
  5863.     CX:SI = input string
  5864.     DX:DI = encrypted string
  5865.     BH = length of input string
  5866. Return: CF set on error
  5867. SeeAlso: AH=F5h/BL=FAh,AH=F5h/BL=FEh
  5868. --------b-1FF5--BLFE-------------------------
  5869. INT 1F U - C&T "SuperState" BIOS - SET PASSWORD
  5870.     AH = F5h
  5871.     BL = FEh
  5872.     CX:SI -> input string
  5873.     BH = length of input string (if BH = 00h, clear password)
  5874. Return: CF set on error
  5875. Note:    the input string must be encrypted by INT 1Fh/AH=F5h/BL=FDh
  5876. SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FFh
  5877. --------b-1FF5--BLFF-------------------------
  5878. INT 1F U - C&T "SuperState" BIOS - GET ENCRYPTED PASSWORD
  5879.     AH = F5h
  5880.     BL = FFh
  5881.     DX:DI = string buffer
  5882. Return: CF set on error
  5883.     CF clear if successful
  5884.         BH = length of input string (if BH = 00h, password is not valid)
  5885.         DX:DI -> encrypted password string
  5886. SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
  5887. --------b-1FFB-------------------------------
  5888. INT 1F U - C&T "SuperState" BIOS - GET/SET CPU SPEED
  5889.     AH = FBh
  5890.     BL = function
  5891.         00h get CPU speed
  5892.         Return: AL = current CPU speed (00h = fast, 01h = slow)
  5893.         01h set CPU speed
  5894.         AL = new CPU speed (00h = fast, 01h = slow)
  5895. SeeAlso: AH=FCh/BL=00h
  5896. --------b-1FFC--BL00-------------------------
  5897. INT 1F U - C&T "SuperState" BIOS - GET ALARM STATUS
  5898.     AH = FCh
  5899.     BL = 00h
  5900. Return: AL = current alarm state (00h = disabled, 01h = enabled)
  5901. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h
  5902. --------b-1FFC--BL01-------------------------
  5903. INT 1F U - C&T "SuperState" BIOS - SET ALARM STATUS
  5904.     AH = FCh
  5905.     BL = 01h
  5906.     AL = new alarm state (00h = disabled, 01h = enabled)
  5907. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h
  5908. --------b-1FFC--BL02-------------------------
  5909. INT 1F U - C&T "SuperState" BIOS - GET ALARM TIME
  5910.     AH = FCh
  5911.     BL = 02h
  5912. Return: CH = hour by BCD
  5913.     CL = min by BCD
  5914.     DH = sec by BCD
  5915. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h,AH=FCh/BL=04h
  5916. --------b-1FFC--BL03-------------------------
  5917. INT 1F U - C&T "SuperState" BIOS - SET ALARM TIME
  5918.     AH = FCh
  5919.     BL = 03h
  5920.     CH = hour by BCD
  5921.     CL = min by BCD
  5922.     DH = sec by BCD
  5923. Return: CF set on error (incorrect time format or Alarm is not enable)
  5924. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h,AH=FCh/BL=05h
  5925. --------b-1FFC--BL04-------------------------
  5926. INT 1F U - C&T "SuperState" BIOS - GET ALARM DATE
  5927.     AH = FCh
  5928.     BL = 04h
  5929. Return: CH = year century by BCD
  5930.     CL = year low by BCD
  5931.     DH = month by BCD
  5932.     DL = date by BCD
  5933. SeeAlso: AH=FCh/BL=02h,AH=FCh/BL=05h
  5934. --------b-1FFC--BL05-------------------------
  5935. INT 1F U - C&T "SuperState" BIOS - SET ALARM DATE
  5936.     AH = FCh
  5937.     BL = 05h
  5938.     CH = year century by BCD
  5939.     CL = year low by BCD
  5940.     DH = month by BCD
  5941.     DL = date by BCD
  5942. Return: CF set on error (incorrect date format or Alarm is not enable)
  5943. SeeAlso: AH=FCh/BL=03h,AH=FCh/BL=04h
  5944. --------b-1FFD--BL00-------------------------
  5945. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP STATUS
  5946.     AH = FDh
  5947.     BL = 00h
  5948. Return: AL = current wake-up state (00h = disabled, 01h = enabled)
  5949. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  5950. --------b-1FFD--BL01-------------------------
  5951. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP STATUS
  5952.     AH = FDh
  5953.     BL = 01h
  5954.     AL = new wake-up state (00h = disabled, 01h = enabled)
  5955. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  5956. --------b-1FFD--BL02-------------------------
  5957. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP TIME
  5958.     AH = FDh
  5959.     BL = 02h
  5960. Return: CH = hour by BCD
  5961.     CL = min by BCD
  5962.     DH = sec by BCD
  5963. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  5964. --------b-1FFD--BL03-------------------------
  5965. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP TIME
  5966.        AH = FDh
  5967.        BL = 03h
  5968.        CH = hour by BCD
  5969.        CL = min by BCD
  5970.        DH = sec by BCD
  5971. Return: CF set on error (incorrect Time format or Auto Wake up is not enable)
  5972. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  5973. --------b-1FFD--BL04-------------------------
  5974. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP DATE
  5975.     AH = FDh
  5976.     BL = 04h
  5977. Return: CH = year century in BCD
  5978.     CL = year low in BCD
  5979.     DH = month in BCD
  5980.     DL = date in BCD
  5981. SeeAlso: AH=FDh/BL=02h,AH=FDh/BL=05h
  5982. --------b-1FFD--BL05-------------------------
  5983. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP DATE
  5984.     AH = FDh
  5985.     BL = 05h
  5986.     CH = year century in BCD
  5987.     CL = year low in BCD
  5988.     DH = month in BCD
  5989.     DL = date in BCD
  5990. Return: CF set on error (incorrect date format or Auto Wake up is not enable)
  5991. SeeAlso: AH=FDh/BL=03h"C&T",AH=FDh/BL=04h"C&T"
  5992. --------O-20---------------------------------
  5993. INT 20 - Minix - SEND/RECEIVE MESSAGE
  5994.     AX = process ID of other process
  5995.     BX -> message
  5996.     CX = operation (1 send, 2 receive, 3 send&receive)
  5997. Program: Minix is a Version 7 Unix-compatible operating system by Andrew
  5998.       Tanenbaum
  5999. Note:    the message contains the system call number (numbered as in V7
  6000.       Unix(tm)) and the call parameters
  6001. --------D-20---------------------------------
  6002. INT 20 - DOS 1+ - TERMINATE PROGRAM
  6003.     CS = PSP segment
  6004. Return: never
  6005. Note:    (see INT 21/AH=00h)
  6006. SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
  6007. --------G-20---------------------------------
  6008. INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
  6009.     ???
  6010. Return: ???
  6011. SeeAlso: INT 21"COMTROL"
  6012. --------W-20---------------------------------
  6013. INT 20 P - Microsoft Windows - VxD FUNCTIONS
  6014. Note:    the desired VxD and function are identified by the data immediately
  6015.       following the INT 20 instruction, as in:
  6016.         INT    20h
  6017.         DW    function number
  6018.         DW    VxD identifier
  6019.  
  6020. (Table 0672)
  6021. Values for VMM (VxD ID 0001h) function number:
  6022.  00h    get version
  6023.  01h    get current VM handle
  6024.  02h    test current VM handle
  6025.  03h    get system VM handle
  6026.  04h    test system VM handle
  6027.  05h    validate VM handle
  6028.  06h    get VMM reenter count
  6029.  07h    begin reentrant execution
  6030.  08h    end reentrant execution
  6031.  09h    install V86 breakpoint
  6032.  0Ah    remove V86 breakpoint
  6033.  0Bh    allocate V86 callback
  6034.  0Ch    allocation PM callback
  6035.  0Dh    call when VM returns
  6036.  0Eh    schedule global event
  6037.  0Fh    schedule VM event
  6038.  10h    call global event
  6039.  11h    call VM event
  6040.  12h    cancel global event
  6041.  13h    cancel VM event
  6042.  14h    call priority VM event
  6043.  15h    cancel priority VM event
  6044.  16h    get NMI handler address
  6045.  17h    set NMI handler address
  6046.  18h    hook NMI event
  6047.  19h    call when VM interrupts enabled
  6048.  1Ah    enable VM interrupts
  6049.  1Bh    disable VM interrupts
  6050.  1Ch    map flat
  6051.  1Dh    map linear to VM address
  6052.  1Eh    adjust execution priority
  6053.  1Fh    begin critical section
  6054.  20h    end critical section
  6055.  21h    end critical section and suspend
  6056.  22h    claim critical section
  6057.  23h    release critical section
  6058.  24h    call when not critical
  6059.  25h    create semaphore
  6060.  26h    destroy semaphore
  6061.  27h    wait on semaphore
  6062.  28h    signal semaphore
  6063.  29h    get critical section status
  6064.  2Ah    call when task switched
  6065.  2Bh    suspend VM
  6066.  2Ch    resume VM
  6067.  2Dh    no-fail resume VM
  6068.  2Eh    nuke VM
  6069.  2Fh    crash current VM
  6070.  30h    get execution focus
  6071.  31h    set execution focus
  6072.  32h    get time slice priority
  6073.  33h    set time slice priority
  6074.  34h    get time slice granularity
  6075.  35h    set time slice granularity
  6076.  36h    get time slice information
  6077.  37h    adjust execution time
  6078.  38h    release time slice
  6079.  39h    wake up VM
  6080.  3Ah    call when idle
  6081.  3Bh    get next VM handle
  6082.  3Ch    set global timeout
  6083.  3Dh    set VM timeout
  6084.  3Eh    cancel timeout
  6085.  3Fh    get system time
  6086.  40h    get VM execution time
  6087.  41h    hook V86 interrupt chain
  6088.  42h    get V86 interrupt vector
  6089.  43h    set V86 interrupt vector
  6090.  44h    get PM interrupt vector
  6091.  45h    set PM interrupt vector
  6092.  46h    simulate interrupt
  6093.  47h    simulate IRET
  6094.  48h    simulate far call
  6095.  49h    simulate far jump
  6096.  4Ah    simulate far RET
  6097.  4Bh    simulate far RET N
  6098.  4Ch    build interrupt stack frame
  6099.  4Dh    simulate push
  6100.  4Eh    simulate pop
  6101.  4Fh    _HeapAllocate
  6102.  50h    _HeapReAllocate
  6103.  51h    _HeapFree
  6104.  52h    _HeapGetSize
  6105.  53h    _PageAllocate
  6106.  54h    _PageReAllocate
  6107.  55h    _PageFree
  6108.  56h    _PageLock
  6109.  57h    _PageUnLock
  6110.  58h    _PageGetSizeAddr
  6111.  59h    _PageGetAllocInfo
  6112.  5Ah    _GetFreePageCount
  6113.  5Bh    _GetSysPageCount
  6114.  5Ch    _GetVMPgCount
  6115.  5Dh    _MapIntoV86
  6116.  5Eh    _PhysIntoV86
  6117.  5Fh    _TestGlobalV86Mem
  6118.  60h    _ModifyPageBits
  6119.  61h    copy page table
  6120.  62h    map linear into V86
  6121.  63h    linear page lock
  6122.  64h    linear page unlock
  6123.  65h    _SetResetV86Pageabl
  6124.  66h    _GetV86PageableArray
  6125.  67h    _PageCheckLinRange
  6126.  68h    page out dirty pages
  6127.  69h    discard pages
  6128.  6Ah    _GetNulPageHandle
  6129.  6Bh    get first V86 page
  6130.  6Ch    map physical address to linear address
  6131.  6Dh    _GetAppFlatDSAlias
  6132.  6Eh    _SelectorMapFlat
  6133.  6Fh    _GetDemandPageInfo
  6134.  70h    _GetSetPageOutCount
  6135.  71h    hook V86 page
  6136.  72h    assign device V86 pages
  6137.  73h    deassign device V86 pages
  6138.  74h    get array of V86 pages for device
  6139.  75h    _SetNULPageAddr
  6140.  76h    allocate GDT selector
  6141.  77h    free GDT selector
  6142.  78h    allocate LDT selector
  6143.  79h    free LDT selector
  6144.  7Ah    _BuildDescriptorDWORDs
  6145.  7Bh    get descriptor
  6146.  7Ch    set descriptor
  6147.  7Dh    toggle HMA
  6148.  7Eh    get fault hook addresses
  6149.  7Fh    hook V86 fault
  6150.  80h    hook PM fault
  6151.  81h    hook VMM fault
  6152.  82h    begin nested V86 execution
  6153.  83h    begin nested execution
  6154.  84h    execute interrupt
  6155.  85h    resume execution
  6156.  86h    end nested execution
  6157.  87h    allocate PM application callback area
  6158.  88h    get current PM application callback area
  6159.  89h    set V86 execution mode
  6160.  8Ah    set PM execution mode
  6161.  8Bh    begin using locked PM stack
  6162.  8Ch    end using locked PM stack
  6163.  8Dh    save client state
  6164.  8Eh    restore client state
  6165.  8Fh    execute VxD interrupt
  6166.  90h    hook device service
  6167.  91h    hook device V86 API
  6168.  92h    hook device PM API
  6169.  93h    system control
  6170.  94h    simulate I/O
  6171.  95h    install multiple I/O handlers
  6172.  96h    install I/O handler
  6173.  97h    enable global trapping
  6174.  98h    enable local trapping
  6175.  99h    disable global trapping
  6176.  9Ah    disable local trapping
  6177.  9Bh    create list
  6178.  9Ch    destroy list
  6179.  9Dh    allocate list
  6180.  9Eh    attach list
  6181.  9Fh    attach list tail
  6182.  A0h    insert into list
  6183.  A1h    remove from list
  6184.  A2h    deallocate list
  6185.  A3h    get first item in list
  6186.  A4h    get next item in list
  6187.  A5h    remove first item in list
  6188.  A6h    add instance item
  6189.  A7h    allocate device callback area
  6190.  A8h    allocate global V86 data area
  6191.  A9h    allocate temporary V86 data area
  6192.  AAh    free temporary V86 data area
  6193.  ABh    get decimal integer from profile
  6194.  ACh    convert decimal string to integer
  6195.  ADh    get fixed-point number from profile
  6196.  AEh    convert fixed-point string
  6197.  AFh    get hex integer from profile
  6198.  B0h    convert hex string to integer
  6199.  B1h    get boolean value from profile
  6200.  B2h    convert boolean string
  6201.  B3h    get string from profile
  6202.  B4h    get next string from profile
  6203.  B5h    get environment string
  6204.  B6h    get exec path
  6205.  B7h    get configuration directory
  6206.  B8h    open file
  6207.  B9h    get PSP segment
  6208.  BAh    get DOS vectors
  6209.  BBh    get machine information
  6210.  BCh    get/set HMA information
  6211.  BDh    set system exit code
  6212.  BEh    fatal error handler
  6213.  BFh    fatal memory error
  6214.  C0h    update system clock
  6215.  C1h    test if debugger installed
  6216.  C2h    output debugger string
  6217.  C3h    output debugger character
  6218.  C4h    input debugger character
  6219.  C5h    debugger convert hex to binary
  6220.  C6h    debugger convert hex to decimal
  6221.  C7h    debugger test if valid handle
  6222.  C8h    validate client pointer
  6223.  C9h    test reentry
  6224.  CAh    queue debugger string
  6225.  CBh    log procedure call
  6226.  CCh    debugger test current VM
  6227.  CDh    get PM interrupt type
  6228.  CEh    set PM interrupt type
  6229.  CFh    get last updated system time
  6230.  D0h    get last updated VM execution time
  6231.  D1h    test if double-byte character-set lead byte
  6232.  D2h    _AddFreePhysPage
  6233.  D3h    _PageResetHandlePAddr
  6234.  D4h    _SetLastV86Page
  6235.  D5h    _GetLastV86Page
  6236.  D6h    _MapFreePhysReg
  6237.  D7h    _UnmapFreePhysReg
  6238.  D8h    _XchgFreePhysReg
  6239.  D9h    _SetFreePhysRegCalBk
  6240.  DAh    get next arena (MCB)
  6241.  DBh    get name of ugly TSR
  6242.  DCh    get debug options
  6243.  DDh    set physical HMA alias
  6244.  DEh    _GetGlblRng0V86IntBase
  6245.  DFh    add global V86 data area
  6246.  E0h    get/set detailed VM error
  6247.  E1h    Is_Debug_Chr
  6248.  E2h    clear monochrome screen
  6249.  E3h    output character to mono screen
  6250.  E4h    output string to mono screen
  6251.  E5h    set current position on mono screen
  6252.  E6h    get current position on mono screen
  6253.  E7h    get character from mono screen
  6254.  E8h    locate byte in ROM
  6255.  E9h    hook invalid page fault
  6256.  EAh    unhook invalid page fault
  6257.  EBh    set delete on exit file
  6258. SeeAlso: #0673
  6259.  
  6260. (Table 0673)
  6261. Values for VPICD (VxD ID 0003h) function number:
  6262.  00h    get version
  6263.  01h    virtualize IRQ
  6264.  02h    set interrupt request
  6265.  03h    clear interrupt request
  6266.  04h    physical EOI
  6267.  05h    get complete status
  6268.  06h    get status
  6269.  07h    test physical request
  6270.  08h    physically mask
  6271.  09h    physically unmask
  6272.  0Ah    set automatic masking
  6273.  0Bh    get IRQ complete status
  6274.  0Ch    convert handle to IRQ
  6275.  0Dh    convert IRQ to interrupt
  6276.  0Eh    convert interrupt to IRQ
  6277.  0Fh    call on hardware interrupt
  6278.  10h    force default owner
  6279.  11h    force default behavior
  6280. SeeAlso: #0672,#0674
  6281.  
  6282. (Table 0674)
  6283. Values for VDMAD (VxD ID 0004h) function number:
  6284.  00h    get version
  6285.  01h    virtualize channel
  6286.  02h    get region information
  6287.  03h    set region information
  6288.  04h    get virtual state
  6289.  05h    set virtual state
  6290.  06h    set physical state
  6291.  07h    mask channel
  6292.  08h    unmask channel
  6293.  09h    lock DMA region
  6294.  0Ah    unlock DMA region
  6295.  0Bh    scatter lock
  6296.  0Ch    scatter unlock
  6297.  0Dh    reserve buffer space
  6298.  0Eh    request buffer
  6299.  0Fh    release buffer
  6300.  10h    copy to buffer
  6301.  11h    copy from buffer
  6302.  12h    default handler
  6303.  13h    disable translation
  6304.  14h    enable translation
  6305.  15h    get EISA address mode
  6306.  16h    set EISA address mode
  6307.  17h    unlock DMA region (ND)
  6308. SeeAlso: #0673,#1969,#1981 at INT 2F/AX=1684h/BX=0444h
  6309.  
  6310. (Table 0675)
  6311. Values for VTD (VxD ID 0005h) function number:
  6312.  0000h    get version
  6313.  0001h    update system clock
  6314.  0002h    get interrupt period
  6315.  0003h    begin minimum interrupt period
  6316.  0004h    end minimum interrupt period
  6317.  0005h    disable trapping
  6318.  0006h    enable trapping
  6319.  0007h    get real time
  6320. SeeAlso: #1969 at INT 2F/AX=1684h/BX=0005h
  6321.  
  6322. (Table 0676)
  6323. Values for V86MMGR (VxD ID 0006h) function number:
  6324.  00h    get version
  6325.  01h    allocate V86 pages
  6326.  02h    set EMS and XMS limits
  6327.  03h    get EMS and XMS limits
  6328.  04h    set mapping information
  6329.  05h    get mapping information
  6330.  06h    Xlat API
  6331.  07h    load client pointer
  6332.  08h    allocate buffer
  6333.  09h    free buffer
  6334.  0Ah    get Xlat buffer state
  6335.  0Bh    set Xlat buffer state
  6336.  0Ch    get VM flat selector
  6337.  0Dh    map pages
  6338.  0Eh    free page map region
  6339.  0Fh    _LocalGlobalReg
  6340.  10h    get page status
  6341.  11h    set local A20
  6342.  12h    reset base pages
  6343.  13h    set available mapped pages
  6344. SeeAlso: #1969,#0677
  6345.  
  6346. (Table 0677)
  6347. Values for PageSwap (VxD ID 0007h) function number:
  6348.  00h    get version
  6349.  01h    test create
  6350.  02h    create swap file
  6351.  03h    destroy swap file
  6352.  04h    in
  6353.  05h    out
  6354.  06h    test if I/O valid
  6355. SeeAlso: #0676,#0678,#1970
  6356.  
  6357. (Table 0678)
  6358. Values for VDD (VxD ID 000Ah) function number:
  6359.  00h    get version
  6360.  01h    PIF state
  6361.  02h    get GrabRtn
  6362.  03h    hide cursor
  6363.  04h    set VM type
  6364.  05h    get ModTime
  6365.  06h    set HCurTrk
  6366.  07h    message clear screen
  6367.  08h    message foreground color
  6368.  09h    message background color
  6369.  0Ah    message output text
  6370.  0Bh    message set cursor position
  6371.  0Ch    query access
  6372. SeeAlso: #0677,#0679,#1970
  6373.  
  6374. (Table 0679)
  6375. Values for VSD (VxD ID 000Bh) function number:
  6376.  00h    get version
  6377.  01h    bell
  6378. SeeAlso: #0678,#0680
  6379.  
  6380. (Table 0680)
  6381. Values for VMD (VxD ID 000Ch) function number:
  6382.  00h    get version
  6383.  01h    set mouse type
  6384.  02h    get mouse owner
  6385. SeeAlso: #0679,#0681
  6386.  
  6387. (Table 0681)
  6388. Values for VKD (VxD ID 000Dh) function number:
  6389.  00h    get version
  6390.  01h    define hotkey
  6391.  02h    remove hotkey
  6392.  03h    locally enable hotkey
  6393.  04h    locally disable hotkey
  6394.  05h    reflect hotkey
  6395.  06h    cancel hotkey state
  6396.  07h    force keys
  6397.  08h    get keyboard owner
  6398.  09h    define paste mode
  6399.  0Ah    start pasting
  6400.  0Bh    cancel paste
  6401.  0Ch    get message key
  6402.  0Dh    peek message key
  6403.  0Eh    flush message key queue
  6404. SeeAlso: #0680,#0682
  6405.  
  6406. (Table 0682)
  6407. Values for VCD (VxD ID 000Eh) function number:
  6408.  00h    get version
  6409.  01h    set port global
  6410.  02h    get focus
  6411.  03h    virtualize port
  6412. SeeAlso: #0681,#0683
  6413.  
  6414. (Table 0683)
  6415. Values for BlockDev (VxD ID 0010h) function number:
  6416.  00h    get version
  6417.  01h    register device
  6418.  02h    find INT 13 drive
  6419.  03h    get device list
  6420.  04h    send command
  6421.  05h    command complete
  6422.  06h    synchronous command
  6423. SeeAlso: #0682,#0684
  6424.  
  6425. (Table 0684)
  6426. Values for EBIOS (VxD ID 0012h) function number:
  6427.  00h    get version
  6428.  01h    get unused memory
  6429. SeeAlso: #0683,#0685
  6430.  
  6431. (Table 0685)
  6432. Values for VNETBIOS (VxD ID 0014h) function number:
  6433.  00h    get version
  6434. SeeAlso: #0684,#0686
  6435.  
  6436. (Table 0686)
  6437. Values for DOSMGR (VxD ID 0015h) function number:
  6438.  00h    get version
  6439.  01h    set exec VM data
  6440.  02h    coyp VM drive state
  6441.  03h    execute VM
  6442.  04h    get InDOS pointer
  6443.  05h    add device
  6444.  06h    remove device
  6445.  07h    instance device
  6446.  08h    get DOS critical status
  6447.  09h    enable InDOS polling
  6448.  0Ah    backfill allowed
  6449.  0Bh    "LocalGlobalReg"
  6450. SeeAlso: #0685,#1971 at INT 2F/AX=1684h/BX=0015h
  6451.  
  6452. (Table 0687)
  6453. Values for SHELL (VxD ID 0017h) function number:
  6454.  00h    get version
  6455.  01h    resolve contention
  6456.  02h    event
  6457.  03h    SYSMODAL message
  6458.  04h    message
  6459.  05h    get VM information
  6460. SeeAlso: #0686,#0688,#1972 at INT 2F/AX=1684h/BX=0017h
  6461.  
  6462. (Table 0688)
  6463. Values for VMPoll (VxD ID 0018h) function number:
  6464.  00h    get version
  6465.  01h    enable/disable
  6466.  02h    reset detection
  6467. SeeAlso: #0675,#1972 at INT 2F/AX=1684h/BX=0017h
  6468.  
  6469. (Table 0689)
  6470. Values for DOSNET (VxD ID 001Ah) function number:
  6471.  00h    get version
  6472.  01h    send FILESYSCHANGE
  6473.  02h    do PSP adjust
  6474. SeeAlso: #0688,#0690
  6475.  
  6476. (Table 0690)
  6477. Values for Int13 (VxD ID 0020h) function number:
  6478.  00h    get version
  6479.  01h    device registered
  6480.  02h    translate VM interrupt
  6481.  03h    hooking BIOS interrupt
  6482.  04h    unhooking BIOS interrupt
  6483. SeeAlso: #0689,#0691
  6484.  
  6485. (Table 0691)
  6486. Values for PAGEFILE (VxD ID 0021h) function number:
  6487.  00h    get version
  6488.  01h    init file
  6489.  02h    clean up
  6490.  03h    grow file
  6491.  04h    read or write
  6492.  05h    cancel
  6493.  06h    test I/O valid
  6494. SeeAlso: #0690,#1976 at INT 2F/AX=1684h/BX=0021h
  6495. --------G-21---------------------------------
  6496. INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
  6497.     ???
  6498. Return: AX = first segment available for control program use
  6499. SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
  6500. --------D-2100-------------------------------
  6501. INT 21 - DOS 1+ - TERMINATE PROGRAM
  6502.     AH = 00h
  6503.     CS = PSP segment
  6504. Notes:    Microsoft recommends using INT 21/AH=4Ch for DOS 2+
  6505.     execution continues at the address stored in INT 22 after DOS performs
  6506.       whatever cleanup it needs to do (restoring the INT 22,INT 23,INT 24
  6507.       vectors from the PSP assumed to be located at offset 0000h in the
  6508.       segment indicated by the stack copy of CS, etc.)
  6509.     if the PSP is its own parent, the process's memory is not freed; if
  6510.       INT 22 additionally points into the terminating program, the
  6511.       process is effectively NOT terminated
  6512.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6513. SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
  6514. --------D-2101-------------------------------
  6515. INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
  6516.     AH = 01h
  6517. Return: AL = character read
  6518. Notes:    ^C/^Break are checked, and INT 23 executed if read
  6519.     ^P toggles the DOS-internal echo-to-printer flag
  6520.     ^Z is not interpreted, thus not causing an EOF if input is redirected
  6521.     character is echoed to standard output
  6522.     standard input is always the keyboard and standard output the screen
  6523.       under DOS 1.x, but they may be redirected under DOS 2+
  6524. SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
  6525. --------v-21010F-----------------------------
  6526. INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
  6527.     AX = 010Fh
  6528. Return: AX = 7553h ("Su") if resident
  6529. SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=0B56h
  6530. --------D-2102-------------------------------
  6531. INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
  6532.     AH = 02h
  6533.     DL = character to write
  6534. Return: AL = last character output (despite the official docs which state
  6535.         nothing is returned) (at least DOS 2.1-5.0)
  6536. Notes:    ^C/^Break are checked, and INT 23 executed if pressed
  6537.     standard output is always the screen under DOS 1.x, but may be
  6538.       redirected under DOS 2+
  6539.     the last character output will be the character in DL unless DL=09h
  6540.       on entry, in which case AL=20h as tabs are expanded to blanks
  6541.     if standard output is redirected to a file, no error checks (write-
  6542.       protected, full media, etc.) are performed
  6543. SeeAlso: AH=06h,AH=09h
  6544. --------D-2103-------------------------------
  6545. INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
  6546.     AH = 03h
  6547. Return: AL = character read
  6548. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  6549.     STDAUX is usually the first serial port
  6550. SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
  6551. --------D-2104-------------------------------
  6552. INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
  6553.     AH = 04h
  6554.     DL = character to write
  6555. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  6556.     STDAUX is usually the first serial port
  6557.     if STDAUX is busy, this function will wait until it becomes free
  6558. SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
  6559. --------D-2105-------------------------------
  6560. INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
  6561.     AH = 05h
  6562.     DL = character to print
  6563. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  6564.     STDPRN is usually the first parallel port, but may be redirected under
  6565.       DOS 2+
  6566.     if the printer is busy, this function will wait
  6567. SeeAlso: INT 17/AH=00h
  6568. --------D-2106-------------------------------
  6569. INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
  6570.     AH = 06h
  6571.     DL = character (except FFh)
  6572. Return: AL = character output (despite official docs which state nothing is
  6573.         returned) (at least DOS 2.1-5.0)
  6574. Notes:    does not check ^C/^Break
  6575.     writes to standard output, which is always the screen under DOS 1.x,
  6576.       but may be redirected under DOS 2+
  6577. SeeAlso: AH=02h,AH=09h
  6578. --------D-2106--DLFF-------------------------
  6579. INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
  6580.     AH = 06h
  6581.     DL = FFh
  6582. Return: ZF set if no character available
  6583.         AL = 00h
  6584.     ZF clear if character available
  6585.         AL = character read
  6586. Notes:    ^C/^Break are NOT checked
  6587.     if the returned character is 00h, the user pressed a key with an
  6588.       extended keycode, which will be returned by the next call of this
  6589.       function
  6590.     this function reads from standard input, which is always the keyboard
  6591.       under DOS 1.x, but may be redirected under DOS 2+
  6592.     although the return of AL=00h when no characters are available is not
  6593.       documented, some programs rely on this behavior
  6594. SeeAlso: AH=0Bh
  6595. --------D-2107-------------------------------
  6596. INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
  6597.     AH = 07h
  6598. Return: AL = character read from standard input
  6599. Notes:    does not check ^C/^Break
  6600.     standard input is always the keyboard under DOS 1.x, but may be
  6601.       redirected under DOS 2+
  6602.     if the interim console flag is set (see AX=6301h), partially-formed
  6603.       double-byte characters may be returned
  6604. SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
  6605. --------D-2108-------------------------------
  6606. INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
  6607.     AH = 08h
  6608. Return: AL = character read from standard input
  6609. Notes:    ^C/^Break are checked, and INT 23 executed if detected
  6610.     standard input is always the keyboard under DOS 1.x, but may be
  6611.       redirected under DOS 2+
  6612.     if the interim console flag is set (see AX=6301h), partially-formed
  6613.       double-byte characters may be returned
  6614. SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h"DOS 3.2+"
  6615. --------D-2109-------------------------------
  6616. INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
  6617.     AH = 09h
  6618.     DS:DX -> '$'-terminated string
  6619. Return: AL = 24h (the '$' terminating the string, despite official docs which
  6620.         state that nothing is returned) (at least DOS 2.1-5.0 and
  6621.         NWDOS)
  6622. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  6623.     standard output is always the screen under DOS 1.x, but may be
  6624.       redirected under DOS 2+
  6625.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6626. SeeAlso: AH=02h,AH=06h"OUTPUT"
  6627. --------D-210A-------------------------------
  6628. INT 21 - DOS 1+ - BUFFERED INPUT
  6629.     AH = 0Ah
  6630.     DS:DX -> buffer (see #0692)
  6631. Return: buffer filled with user input
  6632. Notes:    ^C/^Break are checked, and INT 23 is called if either detected
  6633.     reads from standard input, which may be redirected under DOS 2+
  6634.     if the maximum buffer size (see #0692) is set to 00h, this call returns
  6635.       immediately without reading any input
  6636. SeeAlso: AH=0Ch,INT 2F/AX=4810h
  6637.  
  6638. Format of DOS input buffer:
  6639. Offset    Size    Description    (Table 0692)
  6640.  00h    BYTE    maximum characters buffer can hold
  6641.  01h    BYTE    (call) number of chars from last input which may be recalled
  6642.         (ret) number of characters actually read, excluding CR
  6643.  02h  N BYTEs    actual characters read, including the final carriage return
  6644. --------K-210A00-----------------------------
  6645. INT 21 - WCED v1.6+ - INSTALLATION CHECK
  6646.     AX = 0A00h
  6647.     DS:DX -> 6-byte buffer whose first two bytes must be 00h
  6648. Return: buffer offset 02h-05h filled with "Wced" if installed
  6649. Program: WCED is a free command-line editor and history utility by Stuart
  6650.       Russell
  6651. SeeAlso: AH=FFh"CED"
  6652. --------D-210B-------------------------------
  6653. INT 21 - DOS 1+ - GET STDIN STATUS
  6654.     AH = 0Bh
  6655. Return: AL = status
  6656.         00h if no character available
  6657.         FFh if character is available
  6658. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  6659.     standard input is always the keyboard under DOS 1.x, but may be
  6660.       redirected under DOS 2+
  6661.     if the interim console flag is set (see AX=6301h), this function
  6662.       returns AL=FFh if a partially-formed double-byte character is
  6663.       available
  6664. SeeAlso: AH=06h"INPUT",AX=4406h
  6665. --------v-210B56-----------------------------
  6666. INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
  6667.     AX = 0B56h
  6668. Return: AX = 4952h if resident
  6669. SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h,INT 21/AX=010Fh
  6670. --------D-210C-------------------------------
  6671. INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
  6672.     AH = 0Ch
  6673.     AL = STDIN input function to execute after flushing buffer
  6674.     other registers as appropriate for the input function
  6675. Return: as appropriate for the specified input function
  6676. Note:    if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
  6677.       no input is attempted
  6678. SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
  6679. --------D-210D-------------------------------
  6680. INT 21 - DOS 1+ - DISK RESET
  6681.     AH = 0Dh
  6682. Return: (DOS 6 only) CF clear (earlier versions preserve CF)
  6683. Notes:    This function writes all modified disk buffers to disk, but does not
  6684.       update the directory information (that is only done when files are
  6685.       closed or a SYNC call is issued)
  6686. SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
  6687. --------v-210D20-----------------------------
  6688. INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
  6689.     AX = 0D20h
  6690. Return: AX = 1971h if resident
  6691. SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AX=710Dh,AH=30h/DX=ABCDh
  6692. --------D-210E-------------------------------
  6693. INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
  6694.     AH = 0Eh
  6695.     DL = new default drive (00h = A:, 01h = B:, etc)
  6696. Return: AL = number of potentially valid drive letters
  6697. Notes:    under Novell NetWare, the return value is always 32, the number of
  6698.       drives that NetWare supports
  6699.     under DOS 3.0+, the return value is the greatest of 5, the value of
  6700.       LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
  6701.     on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
  6702.       may be accessed as either A: or B:
  6703.     otherwise, the return value is the highest drive actually present
  6704.     DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
  6705.       and 3+ a maximum of 26 drives
  6706.     under Novell DOS 7, this function returns the correct LASTDRIVE value
  6707.       even when the undocumented LASTDRIVE=27..32 directive was used in
  6708.       CONFIG.SYS
  6709. SeeAlso: AH=19h,AH=3Bh,AH=DBh
  6710. --------v-210E--DLAD-------------------------
  6711. INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
  6712.     AH = 0Eh
  6713.     DL = ADh
  6714. Return: AL = BAh if installed
  6715. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  6716.       Fifth Generation Systems, as bundled with Novell DOS 7
  6717. Note:    SDRes will terminate programs which test for the presence of viruses
  6718.       using interrupt-based installation calls, saying that the program
  6719.       may be infected
  6720. SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h
  6721. --------v-210E--DLAE-------------------------
  6722. INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
  6723.     AH = 0Eh
  6724.     DL = AEh
  6725. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h
  6726. --------v-210E--DLAF-------------------------
  6727. INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
  6728.     AH = 0Eh
  6729.     DL = AFh
  6730. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h
  6731. --------D-210F-------------------------------
  6732. INT 21 - DOS 1+ - OPEN FILE USING FCB
  6733.     AH = 0Fh
  6734.     DS:DX -> unopened File Control Block (see #0693,#0694)
  6735. Return: AL = status
  6736.         00h successful
  6737.         FFh file not found or access denied
  6738. Notes:    (DOS 3.1+) file opened for read/write in compatibility mode
  6739.     an unopened FCB has the drive, filename, and extension fields filled
  6740.       in and all other bytes cleared
  6741.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6742.     DR DOS checks password attached with AX=4303h
  6743. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  6744. SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h
  6745.  
  6746. Format of File Control Block:
  6747. Offset    Size    Description    (Table 0693)
  6748.  00h    BYTE    drive number (0 = default, 1 = A, etc)
  6749.         FFh is not allowed (signals extended FCB, see #0694)
  6750.  01h  8 BYTEs    blank-padded file name
  6751.  09h  3 BYTEs    blank-padded file extension
  6752.  0Ch    WORD    current block number
  6753.  0Eh    WORD    logical record size
  6754.  10h    DWORD    file size
  6755.  14h    WORD    date of last write (see #1006 at AX=5700h)
  6756.  16h    WORD    time of last write (see #1005 at AX=5700h) (DOS 1.1+)
  6757.  18h  8 BYTEs    reserved (see #0695,#0696,#0697,#0698,#0699)
  6758.  20h    BYTE    record within current block
  6759.  21h    DWORD    random access record number (if record size is > 64 bytes, high
  6760.           byte is omitted)
  6761. SeeAlso: #0694
  6762.  
  6763. Format of Extended File Control Block (XFCB):
  6764. Offset    Size    Description    (Table 0694)
  6765.  00h    BYTE    FFh signature for extended FCB
  6766.  01h  5 BYTEs    reserved
  6767.  06h    BYTE    file attribute if extended FCB
  6768.  07h 36 BYTEs    standard FCB (all offsets are shifted by seven bytes)
  6769. SeeAlso: #0653
  6770.  
  6771. Format of FCB reserved field for DOS 1.0:
  6772. Offset    Size    Description    (Table 0695)
  6773.  16h    WORD    location in directory (if high byte = FFh, low byte is device
  6774.           ID)
  6775.  18h    WORD    number of first cluster in file
  6776.  1Ah    WORD    current absolute cluster number on disk
  6777.  1Ch    WORD    current relative cluster number within file
  6778.         (0 = first cluster of file, 1 = second cluster, etc.)
  6779.  1Eh    BYTE    dirty flag (00h = not dirty)
  6780.  1Fh    BYTE    unused
  6781.  
  6782. Format of FCB reserved field for DOS 1.10-1.25:
  6783. Offset    Size    Description    (Table 0696)
  6784.  18h    BYTE    bit 7: set if logical device
  6785.         bit 6: not dirty
  6786.         bits 5-0: disk number or logical device ID
  6787.  19h    WORD    starting cluster number on disk
  6788.  1Bh    WORD    current absolute cluster number on disk
  6789.  1Dh    WORD    current relative cluster number within file
  6790.  1Fh    BYTE    unused
  6791.  
  6792. Format of FCB reserved field for DOS 2.x:
  6793. Offset    Size    Description    (Table 0697)
  6794.  18h    BYTE    bit 7: set if logical device
  6795.         bit 6: set if open???
  6796.         bits 5-0: ???
  6797.  19h    WORD    starting cluster number on disk
  6798.  1Bh    WORD    ???
  6799.  1Dh    BYTE    ???
  6800.  1Eh    BYTE    ???
  6801.  1Fh    BYTE    ???
  6802.  
  6803. Format of FCB reserved field for DOS 3.x:
  6804. Offset    Size    Description    (Table 0698)
  6805.  18h    BYTE    number of system file table entry for file
  6806.  19h    BYTE    attributes
  6807.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  6808.               01 = SHARE.EXE not loaded, character device
  6809.               10 = SHARE.EXE loaded, remote file
  6810.               11 = SHARE.EXE loaded, local file or device
  6811.         bits 5-0: low six bits of device attribute word
  6812. ---SHARE.EXE loaded, local file---
  6813.  1Ah    WORD    starting cluster of file on disk
  6814.  1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record
  6815.           (see #0978 at AH=52h)
  6816.  1Eh    BYTE    file attribute
  6817.  1Fh    BYTE    ???
  6818. ---SHARE.EXE loaded, remote file---
  6819.  1Ah    WORD    number of sector containing directory entry (see #0700)
  6820.  1Ch    WORD    relative cluster within file of last cluster accessed
  6821.  1Eh    BYTE    absolute cluster number of last cluster accessed
  6822.  1Fh    BYTE    ???
  6823. ---SHARE.EXE not loaded---
  6824.  1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
  6825.  1Bh    WORD    starting cluster of file
  6826.  1Dh    WORD    number of sector containing directory entry (see #0700)
  6827.  1Fh    BYTE    number of directory entry within sector
  6828. Note:    if FCB opened on character device, DWORD at 1Ah is set to the address
  6829.       of the device driver header, then the BYTE at 1Ah is overwritten.
  6830. SeeAlso: #0987
  6831.  
  6832. Format of FCB reserved field for DOS 5.0:
  6833. Offset    Size    Description    (Table 0699)
  6834.  18h    BYTE    number of system file table entry for file
  6835.  19h    BYTE    attributes
  6836.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  6837.               01 = SHARE.EXE not loaded, character device
  6838.               10 = SHARE.EXE loaded, remote file
  6839.               11 = SHARE.EXE loaded, local file or device
  6840.         bits 5-0: low six bits of device attribute word
  6841. ---SHARE.EXE loaded, local file---
  6842.  1Ah    WORD    starting cluster of file on disk
  6843.  1Ch    WORD    unique sequence number of sharing record
  6844.  1Eh    BYTE    file attributes
  6845.  1Fh    BYTE    unused???
  6846. ---SHARE.EXE loaded, remote file---
  6847.  1Ah    WORD    network handle
  6848.  1Ch    DWORD    network ID
  6849. ---SHARE not loaded, local device---
  6850.  1Ah    DWORD    pointer to device driver header (see #0987)
  6851.  1Eh  2 BYTEs    unused???
  6852. ---SHARE not loaded, local file---
  6853.  1Ah    BYTE    extra info
  6854.         bit 7: read-only attribute from SFT
  6855.         bit 6: archive attribute from SFT
  6856.         bits 5-0: high bits of sector number
  6857.  1Bh    WORD    starting cluster of file
  6858.  1Dh    WORD    low word of sector number containing directory entry
  6859.         (see #0700)
  6860.  1Fh    BYTE    number of directory entry within sector
  6861. --------D-2110-------------------------------
  6862. INT 21 - DOS 1+ - CLOSE FILE USING FCB
  6863.     AH = 10h
  6864.     DS:DX -> File Control Block (see #0693)
  6865. Return: AL = status
  6866.         00h successful
  6867.         FFh failed
  6868. Notes:    a successful close forces all disk buffers used by the file to be
  6869.       written and the directory entry to be updated
  6870.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6871. SeeAlso: AH=0Fh,AH=16h,AH=3Eh
  6872. --------D-2111-------------------------------
  6873. INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
  6874.     AH = 11h
  6875.     DS:DX -> unopened FCB (see #0693), may contain '?' wildcards
  6876. Return: AL = status
  6877.         00h successful
  6878.         [DTA] unopened FCB for first matching file
  6879.         FFh no matching filename, or bad FCB
  6880. Notes:    the type of the returned FCB depends on whether the input FCB was a
  6881.       normal or an extended FCB
  6882.     the data returned in the DTA (disk transfer area) is actually the
  6883.       drive number (or extended FCB header and drive number) followed by
  6884.       the file's directory entry (see #0700); this format happens to be
  6885.       compatible with an unopened FCB
  6886.     for extended FCBs with search attribute 08h, the volume label (if any)
  6887.       will be returned even if the current directory is not the root dir.
  6888.     DOS 3.0+ also allows the '*' wildcard
  6889.     the search FCB must not be modified if AH=12h will be used to continue
  6890.       searching; DOS 3.3 has set the following parts of the FCB:
  6891.          0Ch    BYTE    ???
  6892.          0Dh    WORD    directory entry number of matching file
  6893.          0Fh    WORD    cluster number of current directory
  6894.          11h  4 BYTEs    ???
  6895.          15h    BYTE    drive number (1=A:)
  6896.     this function is used by many copy protection schemes to obtain the
  6897.       starting cluster of a file
  6898. SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
  6899.  
  6900. Format of DOS directory entry:
  6901. Offset    Size    Description    (Table 0700)
  6902.  00h  8 BYTEs    blank-padded filename
  6903.  08h  3 BYTEs    blank-padded file extension
  6904.  0Bh    BYTE    attributes
  6905.  0Ch 10 BYTEs    (MS-DOS 1.0-6.22) reserved
  6906.         (DR-DOS) used to store file password
  6907.         (MS-DOS 7/Windows95) additional file times (see #0701)
  6908.  16h    WORD    time of creation or last update (see #1005 at AX=5700h)
  6909.  18h    WORD    date of creation or last update (see #1006 at AX=5700h)
  6910.  1Ah    WORD    starting cluster number (see also AX=440Dh/CX=0871h)
  6911.  1Ch    DWORD    file size
  6912. SeeAlso: #0702,#1956,#1957
  6913.  
  6914. Format of MS-DOS 7/Windows95 additional file times:
  6915. Offset    Size    Description    (Table 0701)
  6916.  00h    BYTE    reserved
  6917.  01h    BYTE    10-millisecond units past creation time below
  6918.  02h    WORD    file creation time
  6919.  04h    WORD    file creation date
  6920.  06h    WORD    last-access date
  6921.  08h    WORD    reserved??? (0000h)
  6922. Note:    this data is stored beginning at offset 0Ch in a standard directory
  6923.       entry
  6924. SeeAlso: #0700
  6925.  
  6926. Format of MS-DOS 7/Windows95 long-filename directory entry:
  6927. Offset    Size    Description    (Table 0702)
  6928.  00h    BYTE    LFN record sequence (bit 6 set if last record for file)
  6929.  01h 10 BYTEs    long filename, first part
  6930.  0Bh    BYTE    0Fh (otherwise impossible file attribute, used as signature)
  6931.  0Ch    BYTE    reserved??? (00h)
  6932.  0Dh    BYTE    checksum for short filename
  6933.  10h 12 BYTEs    long filename, second part
  6934.  1Ah    WORD    first cluster number (always 0000h for LFN records)
  6935.  1Ch  4 BYTEs    long filename, third part
  6936. Notes:    long-filename entries are always stored in the directory just prior
  6937.       to the short-name entry for a file
  6938.     multiple LFN records are used if the long filename does not fit into
  6939.       a single record
  6940.     the short-filename checksum byte is computed by adding up the
  6941.       eleven bytes of the short filename, rotating the intermediate
  6942.       sum right one bit before adding the next character
  6943.     the long filename is encoded as 16-bit Unicode characters; for most
  6944.       filenames, this appears in the directory as the ASCII character
  6945.       followed by 00h
  6946. SeeAlso: #0700
  6947. --------D-2112-------------------------------
  6948. INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
  6949.     AH = 12h
  6950.     DS:DX -> unopened FCB (see #0693)
  6951. Return: AL = status
  6952.         00h successful
  6953.         Disk Transfer Area filled with unopened FCB
  6954.         FFh no more matching filenames
  6955. Note:    (see AH=11h)
  6956.     assumes that successful FindFirst executed on search FCB before call
  6957. SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
  6958. --------D-2113-------------------------------
  6959. INT 21 - DOS 1+ - DELETE FILE USING FCB
  6960.     AH = 13h
  6961.     DS:DX -> unopened FCB (see #0693), filename filled with template for
  6962.         deletion ('?' wildcards allowed)
  6963. Return: AL = status
  6964.         00h one or more files successfully deleted
  6965.         FFh no matching files or all were read-only or locked
  6966. Notes:    DOS 1.25+ deletes everything in the current directory (including
  6967.       subdirectories) and sets the first byte of the name to 00h (entry
  6968.       never used) instead of E5h if called on an extended FCB with
  6969.       filename '???????????' and bits 0-4 of the attribute set (bits 1 and
  6970.       2 for DOS 1.x).  This may have originally been an optimization to
  6971.       minimize directory searching after a mass deletion (DOS 1.25+ stop
  6972.       the directory search upon encountering a never-used entry), but can
  6973.       corrupt the filesystem under DOS 2+ because subdirectories are
  6974.       removed without deleting the files they contain.
  6975.     currently-open files should not be deleted
  6976.     MS-DOS allows deletion of read-only files with an extended FCB, whereas
  6977.       Novell NetWare, DR DOS 6, and Novell DOS 7 do not
  6978. SeeAlso: AH=41h,INT 2F/AX=1113h
  6979. --------D-2114-------------------------------
  6980. INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
  6981.     AH = 14h
  6982.     DS:DX -> opened FCB (see #0693)
  6983. Return: AL = status
  6984.         00h successful
  6985.         01h end of file (no data)
  6986.         02h segment wrap in DTA
  6987.         03h end of file, partial record read
  6988.     Disk Tranfer Area filled with record read from file
  6989. Notes:    reads a record of the size specified in the FCB beginning at the
  6990.       current file position, then updates the current block and current
  6991.       record fields in the FCB
  6992.     if a partial record was read, it is zero-padded to the full size
  6993.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  6994. SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
  6995. --------D-2115-------------------------------
  6996. INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
  6997.     AH = 15h
  6998.     DS:DX -> opened FCB (see #0693)
  6999.     Disk Tranfer Area contains record to be written
  7000. Return: AL = status
  7001.         00h successful
  7002.         01h disk full
  7003.         02h segment wrap in DTA
  7004. Notes:    writes a record of the size specified in the FCB beginning at the
  7005.       current file position, then updates the current block and current
  7006.       record fields in the FCB
  7007.     if less than a full sector is written, the data is placed in a DOS
  7008.       buffer to be written out at a later time
  7009.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7010. SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
  7011. --------D-2116-------------------------------
  7012. INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
  7013.     AH = 16h
  7014.     DS:DX -> unopened FCB (see #0693), wildcards not allowed
  7015. Return: AL = status
  7016.         00h successful
  7017.         FFh directory full or file exists and is read-only or locked
  7018. Notes:    if file already exists, it is truncated to zero length
  7019.     if an extended FCB is used, the file is given the attribute in the
  7020.       FCB; this is how to create a volume label in the disk's root dir
  7021.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7022. SeeAlso: AH=0Fh,AH=10h,AH=3Ch
  7023. --------D-2117-------------------------------
  7024. INT 21 - DOS 1+ - RENAME FILE USING FCB
  7025.     AH = 17h
  7026.     DS:DX -> modified FCB (see also #0693)
  7027.         the old filename ('?' wildcards OK) is in the standard location
  7028.         while the new filename ('?' wildcards OK, no drive) is stored
  7029.         in the 11 bytes beginning at offset 11h
  7030. Return: AL = status
  7031.         00h successfully renamed
  7032.         FFh no matching files,file is read-only, or new name already exists
  7033. Notes:    subdirectories may be renamed using an extended FCB with the
  7034.       appropriate attribute, as may volume labels
  7035.     DR DOS checks password attached with AX=4303h before permitting rename
  7036. SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
  7037. --------D-2118-------------------------------
  7038. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  7039.     AH = 18h
  7040. Return: AL = 00h
  7041. Note:    corresponds to the CP/M BDOS function "get bit map of logged drives",
  7042.       which is meaningless under MS-DOS
  7043. SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h
  7044. --------v-211812------------------------
  7045. INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
  7046.     AX = 1812h
  7047. Return: AL = 00h if resident
  7048.     DX = 4310h if resident
  7049. SeeAlso: INT 21/AX=0B56h"VIRUS",INT 21/AX=18FFh,INT 21/AX=2C2Ch"VIRUS"
  7050. --------v-2118FF-----------------------------
  7051. INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
  7052.     AX = 18FFh
  7053. Return: AX = E701h if resident
  7054. SeeAlso: INT 21/AX=1812h"VIRUS",INT 21/AX=2080h"VIRUS"
  7055. --------D-2119-------------------------------
  7056. INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
  7057.     AH = 19h
  7058. Return: AL = drive (00h = A:, 01h = B:, etc)
  7059. Note:    Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
  7060.       from a particular location every time it starts a command to
  7061.       determine when to issue an automatic EOJ
  7062. SeeAlso: AH=0Eh,AH=47h,AH=BBh
  7063. --------D-211A-------------------------------
  7064. INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
  7065.     AH = 1Ah
  7066.     DS:DX -> Disk Transfer Area (DTA)
  7067. Notes:    the DTA is set to PSP:0080h when a program is started
  7068.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7069. SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
  7070. --------D-211B-------------------------------
  7071. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
  7072.     AH = 1Bh
  7073. Return: AL = sectors per cluster (allocation unit)
  7074.     CX = bytes per sector
  7075.     DX = total number of clusters
  7076.     DS:BX -> media ID byte (see #0703)
  7077. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  7078.       versions return a pointer to a copy of the FAT's ID byte
  7079.     this function may not be properly supported on CD-ROMs and other
  7080.       installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
  7081.       instead)
  7082. SeeAlso: AH=1Ch,AH=36h
  7083.  
  7084. (Table 0703)
  7085. Values for media ID byte:
  7086.  FFh    floppy, double-sided, 8 sectors per track (320K)
  7087.  FEh    floppy, single-sided, 8 sectors per track (160K)
  7088.  FDh    floppy, double-sided, 9 sectors per track (360K)
  7089.  FCh    floppy, single-sided, 9 sectors per track (180K)
  7090.  FAh    HP 200LX D: ROM disk, 16 sectors per track (995K)
  7091.     HP 200LX E: (Stacker host drive ???)
  7092.  F9h    floppy, double-sided, 15 sectors per track (1.2M)
  7093.     floppy, double-sided, 9 sectors per track (720K,3.5")
  7094.  F8h    hard disk
  7095.  F0h    other media
  7096.     (e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5")
  7097. --------D-211C-------------------------------
  7098. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
  7099.     AH = 1Ch
  7100.     DL = drive (00h = default, 01h = A:, etc)
  7101. Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
  7102.     CX = bytes per sector
  7103.     DX = total number of clusters
  7104.     DS:BX -> media ID byte (see #0703)
  7105. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  7106.       versions return a pointer to a copy of the FAT's ID byte
  7107.     on a DBLSPACE drive, the total number of clusters is based on the
  7108.       estimated compression ratio
  7109.     this function may not be properly supported on CD-ROMs and other
  7110.       installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
  7111.       instead)
  7112. SeeAlso: AH=1Bh,AH=36h
  7113. --------D-211D-------------------------------
  7114. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  7115.     AH = 1Dh
  7116. Return: AL = 00h
  7117. Note:    corresponds to the CP/M BDOS function "get bit map of read-only
  7118.       drives", which is meaningless under MS-DOS
  7119. SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
  7120. --------D-211E-------------------------------
  7121. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  7122.     AH = 1Eh
  7123. Return: AL = 00h
  7124. Note:    corresponds to the CP/M BDOS function "set file attributes" which was
  7125.      meaningless under MS-DOS 1.x
  7126. SeeAlso: AH=18h,AH=1Dh,AH=20h
  7127. --------D-211F-------------------------------
  7128. INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
  7129.     AH = 1Fh
  7130. Return: AL = status
  7131.         00h successful
  7132.         DS:BX -> Drive Parameter Block (DPB) (see #0704 for DOS 1.x,
  7133.             AH=32h for DOS 2+)
  7134.         FFh invalid drive
  7135. Note:    this call was undocumented prior to the release of DOS 5.0; however,
  7136.       only the DOS 4.0+ version of the DPB has been documented
  7137. SeeAlso: AH=32h,AX=7302h
  7138.  
  7139. Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
  7140. Offset    Size    Description    (Table 0704)
  7141.  00h    BYTE    sequential device ID
  7142.  01h    BYTE    logical drive number (0=A:)
  7143.  02h    WORD    bytes per sector
  7144.  04h    BYTE    highest sector number within a cluster
  7145.  05h    BYTE    shift count to convert clusters into sectors
  7146.  06h    WORD    starting sector number of first FAT
  7147.  08h    BYTE    number of copies of FAT
  7148.  09h    WORD    number of directory entries
  7149.  0Bh    WORD    number of first data sector
  7150.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  7151.  0Fh    BYTE    sectors per FAT
  7152.  10h    WORD    starting sector of directory
  7153.  12h    WORD    address of allocation table
  7154. Note:    the DOS 1.0 table is the same except that the first and last fields
  7155.       are missing; see INT 21/AH=32h for the DOS 2+ version
  7156. --------D-2120-------------------------------
  7157. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  7158.     AH = 20h
  7159. Return: AL = 00h
  7160. Note:    corresponds to the CP/M BDOS function "get/set default user
  7161.       (sublibrary) number", which is meaningless under MS-DOS
  7162. SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
  7163. --------v-212080-----------------------------
  7164. INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
  7165.     AX = 2080h
  7166. Return: AH = 00h if resident (normal DOS return would be AX = 2000h)
  7167. SeeAlso: INT 21/AX=18FFh"VIRUS",INT 21/AX=2C2Ch"VIRUS"
  7168. --------D-2121-------------------------------
  7169. INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
  7170.     AH = 21h
  7171.     DS:DX -> opened FCB (see #0693)
  7172. Return: AL = status
  7173.         00h successful
  7174.         01h end of file, no data read
  7175.         02h segment wrap in DTA, no data read
  7176.         03h end of file, partial record read
  7177.     Disk Tranfer Area filled with record read from file
  7178. Notes:    the record is read from the current file position as specified by the
  7179.       random record and record size fields of the FCB
  7180.     the file position is not updated after reading the record
  7181.     if a partial record is read, it is zero-padded to the full size
  7182.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7183. SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
  7184. --------D-2122-------------------------------
  7185. INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
  7186.     AH = 22h
  7187.     DS:DX -> opened FCB (see #0693)
  7188.     Disk Transfer Area contains record to be written
  7189. Return: AL = status
  7190.         00h successful
  7191.         01h disk full
  7192.         02h segment wrap in DTA
  7193. Notes:    the record is written to the current file position as specified by the
  7194.       random record and record size fields of the FCB
  7195.     the file position is not updated after writing the record
  7196.     if the record is located beyond the end of the file, the file is
  7197.       extended but the intervening data remains uninitialized
  7198.     if the record only partially fills a disk sector, it is copied to a
  7199.       DOS disk buffer to be written out to disk at a later time
  7200.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7201. SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
  7202. --------D-2123-------------------------------
  7203. INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
  7204.     AH = 23h
  7205.     DS:DX -> unopened FCB (see #0693), wildcards not allowed
  7206. Return: AL = status
  7207.         00h successful (matching file found)
  7208.         FCB random record field filled with size in records, rounded up
  7209.         to next full record
  7210.         FFh failed (no matching file found)
  7211. Notes:    not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7212.     MS-DOS returns nonsense if the FCB record number field is set to a very
  7213.       large positive number, and status FFh if negative; DR DOS returns the
  7214.       correct file size in both cases
  7215. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  7216. SeeAlso: AH=42h
  7217. --------D-2124-------------------------------
  7218. INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
  7219.     AH = 24h
  7220.     DS:DX -> opened FCB (see #0693)
  7221. Notes:    computes the random record number corresponding to the current record
  7222.       number and record size, then stores the result in the FCB
  7223.     normally used when switching from sequential to random access
  7224.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  7225. SeeAlso: AH=21h,AH=27h,AH=42h
  7226. --------D-2125-------------------------------
  7227. INT 21 - DOS 1+ - SET INTERRUPT VECTOR
  7228.     AH = 25h
  7229.     AL = interrupt number
  7230.     DS:DX -> new interrupt handler
  7231. Notes:    this function is preferred over direct modification of the interrupt
  7232.       vector table
  7233.     some DOS extenders place an API on this function, as it is not
  7234.       directly meaningful in protected mode
  7235.     under DR DOS 5.0+, this function does not use any of the DOS-internal
  7236.       stacks and may thus be called at any time
  7237.     Novell NetWare (except the new DOS Requester) monitors the offset of
  7238.       any INT 24 set, and if equal to the value at startup, substitutes
  7239.       its own handler to allow handling of network errors; this introduces
  7240.       the potential bug that any program whose INT 24 handler offset
  7241.       happens to be the same as COMMAND.COM's will not have its INT 24
  7242.       handler installed
  7243. SeeAlso: AX=2501h,AH=35h
  7244. --------E-212501-----------------------------
  7245. INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
  7246.     AX = 2501h
  7247.     SS = application's original SS or DS (FlashTek X-32VM)
  7248. Return: CF clear if successful
  7249.     CF set on error
  7250.         caller is operating on X-32 stack (FlashTek X-32VM)
  7251. Notes:    Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
  7252.       system calls.     Only available when directly using 386/DOS-Extender or
  7253.       a compatible DOS extender, or when using a product that was created
  7254.       using 386-DOS/Extender or a compatible
  7255.     this function is also supported by FlashTek X-32VM
  7256. SeeAlso: AH=30h"Phar Lap"
  7257. --------E-212502-----------------------------
  7258. INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
  7259.     AX = 2502h
  7260.     CL = interrupt number
  7261. Return: CF clear
  7262.     ES:EBX = CS:EIP of protected-mode interrupt handler
  7263. Note:    this function is also supported by FlashTek X-32VM
  7264. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
  7265. --------E-212503-----------------------------
  7266. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
  7267.     AX = 2503h
  7268.     CL = interrupt number
  7269. Return: CF clear
  7270.     EBX = CS:IP of real-mode interrupt handler
  7271. Note:    this function is also supported by FlashTek X-32VM
  7272. SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
  7273. --------E-212504-----------------------------
  7274. INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
  7275.     AX = 2504h
  7276.     CL = interrupt number
  7277.     DS:EDX = CS:EIP of protected-mode interrupt handler
  7278. Return: CF clear
  7279. Note:    this function is also supported by FlashTek X-32VM
  7280. SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
  7281. --------E-212505-----------------------------
  7282. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
  7283.     AX = 2505h
  7284.     CL = interrupt number
  7285.     EBX = CS:IP of real-mode interrupt handler
  7286. Return: CF clear
  7287. Note:    this function is also supported by FlashTek X-32VM
  7288. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
  7289. --------E-212506-----------------------------
  7290. INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
  7291.     AX = 2506h
  7292.     CL = interrupt number
  7293.     DS:EDX = CS:EIP of protected-mode interrupt handler
  7294. Return: CF clear
  7295. Notes:    this function modifies both the real-mode low-memory interrupt
  7296.       vector table and the protected-mode Interrupt Descriptor Table (IDT)
  7297.     interrupts occurring in real mode are resignaled in protected mode
  7298.     this function is also supported by FlashTek X-32VM
  7299. --------E-212507-----------------------------
  7300. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
  7301.     AX = 2507h
  7302.     CL = interrupt number
  7303.     DS:EDX = CS:EIP of protected-mode interrupt handler
  7304.     EBX = CS:IP of real-mode interrupt handler
  7305. Return: CF clear
  7306. Notes:    interrupts are disabled until both vectors have been modified
  7307.     this function is also supported by FlashTek X-32VM
  7308. SeeAlso: AX=2504h,AX=2505h
  7309. --------E-212508-----------------------------
  7310. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
  7311.     AX = 2508h
  7312.     BX = segment selector
  7313. Return: CF clear if successful
  7314.         ECX = linear base address of segment
  7315.     CF set if invalid segment selector
  7316. Note:    this function is also supported by FlashTek X-32VM
  7317. SeeAlso: AX=2509h
  7318. --------E-212509-----------------------------
  7319. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
  7320.     AX = 2509h
  7321.     EBX = linear address to convert
  7322. Return: CF clear if successful
  7323.         ECX = physical address (carry flag clear)
  7324.     CF set if linear address not mapped in page tables
  7325. SeeAlso: AX=2508h
  7326. --------E-212509-----------------------------
  7327. INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
  7328.     AX = 2509h
  7329. Return: CF clear
  7330.     EAX high word = default DS
  7331.     AX = alias for 16-bit data segment
  7332.     BX = real mode code segment
  7333.     EDX high word = selector covering full 4GB address space
  7334.     DX = default SS
  7335.     ESI high word = PSP selector
  7336.     SI = environment selector
  7337. --------E-21250A-----------------------------
  7338. INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
  7339.     AX = 250Ah
  7340.     ES = segment selector in the Local Descriptor Table (LDT) of segment
  7341.          to modify
  7342.     EBX = physical base address of memory to map (multiple of 4K)
  7343.     ECX = number of physical 4K pages to map
  7344. Return: CF clear if successful
  7345.         EAX = 32-bit offset in segment of mapped memory
  7346.     CF set on error
  7347.         EAX = error code
  7348.         08h insufficient memory to create page tables
  7349.         09h invalid segment selector
  7350. SeeAlso: INT 31/AX=0800h
  7351. --------E-21250C-----------------------------
  7352. INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
  7353.     AX = 250Ch
  7354. Return: CF clear
  7355.     AL = base interrupt vector for IRQ0-IRQ7
  7356.     AH = base interrupt vector for IRQ8-IRQ15
  7357.     BL = interrupt vector for BIOS print screen function (Phar Lap only)
  7358. Note:    this function is also supported by FlashTek X-32VM
  7359. SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
  7360. --------E-21250D-----------------------------
  7361. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
  7362.     AX = 250Dh
  7363. Return: CF clear
  7364.     EAX = CS:IP of real-mode callback procedure (see #0705) that will
  7365.           call through from real mode to a protected-mode routine
  7366.     EBX = 32-bit real-mode address of intermode call data buffer
  7367.     ECX = size in bytes of intermode call data buffer
  7368.     ES:EDX = protected-mode address of intermode call data buffer
  7369. Notes:    this function is also supported by FlashTek X-32VM
  7370.     X-32VM guarantees the intermode buffer to be at least 4 KB
  7371. SeeAlso: AX=250Eh
  7372.  
  7373. (Table 0705)
  7374. Call Phar Lap real-mode callback with:
  7375.     STACK:    DWORD    offset to protected-mode code
  7376.         WORD    placeholder for protected-mode CS
  7377.         DWORD    pointer to selector structure (see #0706)
  7378.             or 0000h:0000h for defaults
  7379.         var    parameters for protected-mode procedure
  7380. Return: via FAR return
  7381.  
  7382. Format of Phar Lap selector structure:
  7383. Offset    Size    Description    (Table 0706)
  7384.  00h    WORD    protected-mode GS selector
  7385.  02h    WORD    protected-mode FS selector
  7386.  04h    WORD    protected-mode ES selector
  7387.  06h    WORD    protected-mode DS selector
  7388. --------E-21250E-----------------------------
  7389. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
  7390.     AX = 250Eh
  7391.     EBX = CS:IP of real-mode procedure to call
  7392.     ECX = number of two-byte words to copy from protected-mode stack
  7393.           to real-mode stack
  7394. Return: CF clear if successful
  7395.         all segment registers unchanged
  7396.         all general registers contain values set by real-mode procedure
  7397.         all other flags set as they were left by real-mode procedure
  7398.         stack unchanged
  7399.     CF set on error
  7400.         EAX = error code
  7401.         01h not enough real-mode stack space
  7402. Note:    this function is also supported by FlashTek X-32VM; under X-32VM, the
  7403.       call will fail if ECX > 0000003Fh
  7404. SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
  7405. --------E-21250F-----------------------------
  7406. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
  7407.     AX = 250Fh
  7408.     ES:EBX = 48-bit protected-mode address to convert
  7409.     ECX = 00000000h or length of data in bytes
  7410. Return: CF clear if successful (address < 1MB and contiguous)
  7411.         ECX = 32-bit real-mode MS-DOS address
  7412.     CF set on error (address >= 1MB or not contiguous)
  7413.         ECX = linear address
  7414. Note:    this function is also supported by FlashTek X-32VM
  7415. SeeAlso: AX=2510h
  7416. --------E-212510-----------------------------
  7417. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
  7418.     AX = 2510h
  7419.     EBX = CS:IP of real-mode procedure to call
  7420.     ECX = number of two-byte words to copy to protected-mode stack to
  7421.           real-mode stack
  7422.     DS:EDX -> pointer to parameter block (see #0707)
  7423. Return: CF clear if successful
  7424.         all segment registers unchanged,
  7425.         EDX unchanged
  7426.         all other general registers contain values set by real-mode proc
  7427.         all other flags are set as they were left by real-mode procedure
  7428.         real-mode register values are returned in the parameter block
  7429.     CF set on error
  7430.         EAX = error code
  7431.         01h not enough real-mode stack space
  7432. Note:    unlike most of the preceding 25xxh functions, this one is not
  7433.       supported by FlashTek X-32VM
  7434. SeeAlso: AX=250Eh,AX=250Fh
  7435.  
  7436. Format of Phar Lap real-mode call parameter block:
  7437. Offset    Size    Description    (Table 0707)
  7438.  00h    WORD    real-mode DS value
  7439.  02h    WORD    real-mode ES value
  7440.  04h    WORD    real-mode FS value
  7441.  06h    WORD    real-mode GS value
  7442.  08h    DWORD    real-mode EAX value
  7443.  0Ch    DWORD    real-mode EBX value
  7444.  10h    DWORD    real-mode ECX value
  7445.  14h    DWORD    real-mode EDX value
  7446. --------E-212511-----------------------------
  7447. INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
  7448.     AX = 2511h
  7449.     DS:EDX -> parameter block (see #0708)
  7450. Return: all segment registers unchanged
  7451.     EDX unchanged
  7452.     all other registers contain values set by the real-mode int handler
  7453.     the flags are set as they were left by the real-mode interrupt handler
  7454.     real-mode register values are returned in the parameter block
  7455. Note:    this function is also supported by FlashTek X-32VM
  7456. SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
  7457.  
  7458. Format of Phar Lap real-mode interrupt parameter block:
  7459. Offset    Size    Description    (Table 0708)
  7460.  00h    WORD    interrupt number
  7461.  02h    WORD    real-mode DS value
  7462.  04h    WORD    real-mode ES value
  7463.  06h    WORD    real-mode FS value
  7464.  08h    WORD    real-mode GS value
  7465.  0Ah    DWORD    real-mode EAX value
  7466.  0Eh    DWORD    real-mode EDX value
  7467. Note: all other real-mode values set from protected-mode registers
  7468. --------E-212512-----------------------------
  7469. INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
  7470.     AX = 2512h
  7471.     DS:EDX -> pointer to ASCIZ program name
  7472.     ES:EBX -> pointer to parameter block (see #0710)
  7473.     ECX = size in bytes of LDT buffer
  7474. Return: CF clear if successful
  7475.         EAX = number of segment descriptors in LDT
  7476.     CF set on error
  7477.         EAX = error code (see #0709)
  7478. SeeAlso: AX=2517h
  7479.  
  7480. (Table 0709)
  7481. Values for Phar Lap error code:
  7482.  02h    file not found or path invalid
  7483.  05h    access denied
  7484.  08h    insufficient memory
  7485.  0Ah    environment invalid
  7486.  0Bh    invalid file format
  7487.  80h    LDT too small
  7488.  
  7489. Format of Phar Lap program load parameter block:
  7490. Offset    Size    Description    (Table 0710)
  7491. Input:
  7492.  00h    DWORD    32-bit offset of environment string
  7493.  04h    WORD    segment of environment string
  7494.  06h    DWORD    32-bit offset of command-tail string
  7495.  0Ah    WORD    segment of command-tail string
  7496.  0Ch    DWORD    32-bit offset of LDT buffer (size in ECX)
  7497.  10h    WORD    segment of LDT buffer
  7498. Output:
  7499.  12h    WORD    real-mode paragraph address of PSP (see also AH=26h)
  7500.  14h    WORD    real/protected mode flag
  7501.         0000h  real mode
  7502.         0001h  protected mode
  7503.  16h    DWORD    initial EIP value
  7504.  1Ah    WORD    initial CS value
  7505.  1Ch    DWORD    initial ESP value
  7506.  20h    WORD    initial SS value
  7507.  22h    WORD    initial DS value
  7508.  24h    WORD    initial ES value
  7509.  26h    WORD    initial FS value
  7510.  28h    WORD    initial GS value
  7511. --------E-212513-----------------------------
  7512. INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
  7513.     AX = 2513h
  7514.     BX = segment selector of descriptor in GDT or LDT
  7515.     CL = access-rights byte for alias descriptor
  7516.     CH = use-type bit (USE16 or USE32) for alias descriptor
  7517. Return: CF clear if successful
  7518.         AX = segment selector for created alias
  7519.     CF set on error
  7520.         EAX = error code
  7521.         08h insufficient memory (can't grow LDT)
  7522.         09h invalid segment selector in BX
  7523. --------E-212514-----------------------------
  7524. INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
  7525.     AX = 2514h
  7526.     BX = segment selector of descriptor in GDT or LDT
  7527.     CL = new access-rights byte
  7528.     CH = new use-type bit (USE16 or USE32)
  7529. Return: CF clear if successful
  7530.     CF set on error
  7531.         EAX = error code
  7532.         09h invalid selector in BX
  7533. SeeAlso: AX=2515h,INT 31/AX=0009h
  7534. --------E-212515-----------------------------
  7535. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
  7536.     AX = 2515h
  7537.     BX = segment selector of descriptor in GDT or LDT
  7538. Return: CF clear if successful
  7539.         CL = access-rights byte for segment
  7540.         CH = use-type bit (USE16 or USE32)
  7541.     ECX<16-31> destroyed
  7542.     CF set on error
  7543.         EAX = error code
  7544.         09h invalid segment selector in BX
  7545. SeeAlso: AX=2514h
  7546. --------E-212516-----------------------------
  7547. INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
  7548.     AX = 2516h
  7549. Return: CF clear
  7550. Note:    this function must be called from Ring 0 or the CS descriptor is freed
  7551. --------E-212517-----------------------------
  7552. INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
  7553.     AX = 2517h
  7554. Return: CF clear
  7555.     ES:EBX -> data buffer (protected mode address)
  7556.     ECX -> data buffer (real mode address)
  7557.     EDX = size of data buffer in bytes
  7558. Note:    the data buffer's address changes after calls to AX=2512h and AX=252Ah
  7559. SeeAlso: AX=2512h,AX=252Ah,AX=2530h
  7560. --------E-212518-----------------------------
  7561. INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
  7562.     AX = 2518h
  7563.     ES:EBX -> function to call when a segment is moved
  7564. Return: CF clear
  7565.     ES:EBX -> previous handler
  7566. --------E-212519-----------------------------
  7567. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
  7568.     AX = 2519h
  7569. Return: CF clear
  7570.     EAX = error code
  7571.         0000h  no error
  7572.         0001h  out of physical memory
  7573.         0002h  out of swap space (unable to grow swap file)
  7574.         0003h  out of LDT entries and unable to grow LDT
  7575.         0004h  unable to change extended memory allocation mark
  7576.         FFFFFFFFh    paging disabled
  7577. Note:    VMM is the Virtual Memory Manager option
  7578. --------E-21251A-----------------------------
  7579. INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
  7580.     AX = 251Ah
  7581.     EDX = number of 4k pages to lock
  7582.     if BL = 00h
  7583.         ECX = linear address of first page to lock
  7584.     if BL = 01h
  7585.         ES:ECX -> pointer to first page to lock
  7586. Return: CF clear if successful
  7587.     CF set on error
  7588.         EAX = error code
  7589.         08h insufficient memory
  7590.         09h invalid address range
  7591. SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
  7592. --------E-21251B-----------------------------
  7593. INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
  7594.     AX = 251Bh
  7595.     EDX = number of pages to unlock
  7596.     if BL = 00h
  7597.         ECX = linear address of first page to unlock
  7598.     if BL = 01h
  7599.         ES:ECX -> pointer to first page to unlock
  7600. Return: CF clear if successful
  7601.     CF set on error
  7602.         EAX = error code
  7603.         09h invalid address range
  7604. SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
  7605. --------E-21251C-----------------------------
  7606. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
  7607.     AX = 251Ch
  7608.     BH = preservation flag (00h preserve contents, 01h discard contents)
  7609.     EDX = number of pages to free
  7610.     BL = address type
  7611.         00h linear address
  7612.         ECX = linear address of first page to be freed
  7613.         01h pointer
  7614.         ES:ECX -> first page to be freed
  7615. Return: CF clear if successful
  7616.     CF set on error
  7617.         EAX = error code
  7618.         08h memory error, swap space full, no VMM or DPMI
  7619.         09h invalid address
  7620. --------E-21251D-----------------------------
  7621. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
  7622.     AX = 251Dh
  7623.     BL = address type
  7624.         00h linear address
  7625.         ECX = linear address of page table entry to read
  7626.         01h pointer
  7627.         ES:ECX -> page table entry to read
  7628. Return: CF clear if successful
  7629.         EAX = contents of page table entry
  7630.     CF set on error
  7631.         EAX = error code
  7632.         09h invalid address or NOPAGE option set
  7633.         78h invalid under DPMI
  7634. Note:    this function is obsolete; use AX=252Bh/BH=09h instead
  7635. SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h
  7636. --------E-21251E-----------------------------
  7637. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
  7638.     AX = 251Eh
  7639.     BL = address type
  7640.         00h linear address
  7641.         ECX = linear address of page table entry to read
  7642.         01h pointer
  7643.         ES:ECX -> page table entry to read
  7644.     EDX = new value for page table entry
  7645. Return: CF clear if successful
  7646.     CF set on error
  7647.         EAX = error code
  7648.         09h invalid address or NOPAGE option set
  7649.         82h not compatible with DPMI
  7650. Note:    this call is obsolete; use AX=252Bh/BH=0Ah instead
  7651. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h
  7652. --------E-21251F-----------------------------
  7653. INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
  7654.     AX = 251Fh
  7655.     BL = address type
  7656.         00h linear address
  7657.         ECX = linear address of first page table entry
  7658.         EDX = linear address of second page table entry
  7659.         01h pointer
  7660.         ES:ECX -> first page table entry
  7661.         ES:EDX -> second page table entry
  7662. Return: CF clear if successful
  7663.     CF set on error
  7664.         EAX = error code
  7665.         09h invalid address or NOPAGE option set
  7666.         82h not compatible with DPMI
  7667. SeeAlso: AX=251Dh,AX=251Eh
  7668. --------E-212520-----------------------------
  7669. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
  7670.     AX = 2520h
  7671.     DS:EDX -> pointer to buffer at least 100 bytes in size (see #0711)
  7672.     BL = 0 (don't reset VM stats), 1 (reset VM stats)
  7673. Return: carry flag clear
  7674.  
  7675. Format of Phar Lap VM statistics buffer:
  7676. Offset    Size    Description    (Table 0711)
  7677.  00h    DWORD    VM status
  7678.         0001h VM subsystem is present
  7679.         0000h VM not present
  7680.  04h    DWORD    "nconvpg" number of conventional memory pages available
  7681.  08h    DWORD    "nbimpg" number of Compaq built-in memory pages available
  7682.  0Ch    DWORD    "nextpg" total number of extended memory pages
  7683.  10h    DWORD    "extlim" extender memory pages limit
  7684.  14h    DWORD    "aphyspg" number of physical memory pages allocated to appl
  7685.  18h    DWORD    "alockpg" number of locked pages owned by application
  7686.  1Ch    DWORD    "sysphyspg" number physical memory pages allocated to system
  7687.  20h    DWORD    "nfreepg" number of free physical pages; approx if EMS VCPI
  7688.  24h    DWORD    linear address of beginning of application address space
  7689.  28h    DWORD    linear address of end of application address space
  7690.  2Ch    DWORD    number of seconds since last time VM stats were reset
  7691.  30h    DWORD    number of page faults since last time
  7692.  34h    DWORD    number of pages written to swap file since last time
  7693.  38h    DWORD    number of reclaimed pages (page faults on swapped pages)
  7694.  3Ch    DWORD    number of virtual pages allocated to the application
  7695.  40h    DWORD    size in pages of swap file
  7696.  44h    DWORD    number of system pages allocated with EMS calls
  7697.  48h    DWORD    minimum number of conventional memory pages
  7698.  4Ch    DWORD    maximum size in pages to which swap file can be increased
  7699.  50h    DWORD    "vmflags"
  7700.         bit 0 = 1 if page fault in progress
  7701. ---v4.0+ ---
  7702.  54h    DWORD    number of physical pages guaranteed to be free
  7703.  58h    DWORD    number of free physical pages currently available
  7704.  5Ch    DWORD    size in pages of largest free block of memory (including disk
  7705.           swap space)
  7706.  60h    DWORD    reserved
  7707. --------E-212521-----------------------------
  7708. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
  7709.     AX = 2521h
  7710.     EBX = max 4k pages of physical extended memory which program may use
  7711. Return: CF clear if successful
  7712.        EBX = maximum limit in pages
  7713.        ECX = minimum limit in pages
  7714.     CF set on error
  7715.         EAX = error code
  7716.         08h insufficient memory or -nopage switch used
  7717. SeeAlso: AX=2522h
  7718. --------E-212522-----------------------------
  7719. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
  7720.     AX = 2522h
  7721.     ES:EBX -> alternate handler for page faults
  7722. Return: CF clear
  7723.     ES:EBX -> previous page-fault handler
  7724. SeeAlso: AX=2523h
  7725. --------E-212523-----------------------------
  7726. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
  7727.     AX = 2523h
  7728.     ???
  7729. Return: ???
  7730. Note:    this function takes a DWORD pointer and a DWORD pointer to a DWORD
  7731.       pointer as arguments
  7732. SeeAlso: AX=2522h
  7733. --------E-212524-----------------------------
  7734. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
  7735.     AX = 2524h
  7736.     ???
  7737. Return: ???
  7738. Note:    this function takes three DWORD pointers and three DWORD pointers to
  7739.       DWORD pointers as arguments
  7740. --------E-212525-----------------------------
  7741. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
  7742.     AX = 2525h
  7743.     EBX = limit in 4k pages of physical conventional memory which program
  7744.           may use
  7745. Return: CF clear if successful
  7746.         EBX = maximum limit in pages
  7747.         ECX = minimum limit in pages
  7748.     CF set on error
  7749.         EAX = error code
  7750.         08h insufficient memory or -nopage switch used
  7751. SeeAlso: AX=2521h
  7752. --------E-212526-----------------------------
  7753. INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
  7754.     AX = 2526h
  7755.     ???
  7756. Return: ???
  7757. Notes:    details are not yet available
  7758.     this function takes a pointer to the configuration buffer (see #0712)
  7759.       and a poitner to a BYTE as arguments
  7760.  
  7761. Format of Phar Lap configuration buffer:
  7762. Offset    Size    Description    (Table 0712)
  7763.  00h    DWORD    flags 1 (see #0713)
  7764.  04h    DWORD    flags 2 (unused through v5.0)
  7765.  08h    DWORD    flags 3 (unused through v5.0)
  7766.  0Ch    DWORD    386|DOS-Extender major version
  7767.  10h    DWORD    386|DOS-Extender minor version
  7768.  14h    DWORD    first letter of text after minor version number in version str
  7769.  18h    DWORD    beta flag (00h normal release, 01h beta release)
  7770.  1Ch    DWORD    processor (3 = 386, 4 = 486)
  7771.  20h    DWORD    coprocessor (4 = none, 6 = 287, 7 = 387/486)
  7772.  24h    DWORD    Weitek coprocessor flag (0 = none, 1 = present)
  7773.  28h    DWORD    machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
  7774.  2Ch    DWORD    machine class
  7775.         IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
  7776.         NEC: 0=normal mode, 1=high-res mode
  7777.  30h    DWORD    VCPI flag (0 = none, 1 = present)
  7778.  34h    DWORD    -WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
  7779.  38h    DWORD    -MINREAL setting
  7780.  3Ch    DWORD    -MAXREAL setting
  7781.  40h    DWORD    -MINIBUF setting
  7782.  44h    DWORD    -MAXIBUF setting
  7783.  48h    DWORD    size in bytes of DOS call data buffer
  7784.  4Ch    DWORD    number of interrupt stacks (-NISTACK)
  7785.  50h    DWORD    interrupt stack size (-ISTKSIZE)
  7786.  54h    DWORD    -REALBREAK setting
  7787.  58h    DWORD    -CALLBUFS
  7788.  5Ch    DWORD    -HWIVEC
  7789.  60h    DWORD    -PRIVEC
  7790.  64h    DWORD    -INTMAP
  7791.  68h    DWORD    -PRIMAP
  7792.  6Ch    DWORD    VCPI: master 8259 interrupt vector base (IRQ0 mapping)
  7793.  70h    DWORD    VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
  7794.  74h    DWORD    BIOS print screen interrupt vector (0 if NEC)
  7795.  78h    DWORD    -EXTLOW setting
  7796.  7Ch    DWORD    -EXTHIGH setting
  7797.  80h    DWORD    lowest physical extended-memory address allocatable
  7798.  84h    DWORD    highest physical extended-memory address allocatable + 1
  7799.  88h    DWORD    special memory's physical base address (00000000h if none)
  7800.  8Ch    DWORD    special memory size in bytes (00000000h if none)
  7801.  90h    DWORD    -MAXVCPIMEM setting
  7802.  94h    DWORD    -VSCAN
  7803.  98h    DWORD    -SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
  7804.  9Ch    DWORD    -CODESIZE setting
  7805.  A0h    DWORD    minimum swap file size (-MINSWFSIZE)
  7806.  A4h    DWORD    maximum swap fiel size (-MAXSWFSIZE)
  7807.  A8h    DWORD    page replacement policy (0 = LFU, 1 = NUR)
  7808.  ACh    DWORD    number of GDT entries (-NGDTENT)
  7809.  B0h    DWORD    number of LDT entries (-NLDTENT)
  7810.  B4h    DWORD    program's privilege level (0-3)
  7811. ---386|DOS-Extender v3.0+ ---
  7812.  B8h    DWORD    -LOCKSTACK setting
  7813.  BCh    DWORD    -MAXEXTMEM
  7814.  C0h    DWORD    -MAXXMSMEM
  7815.  C4h    DWORD    -MAXPGMMEM
  7816.  C8h    DWORD    -DATATHRESHOLD
  7817.  CCh    DWORD    virtual memory manager flag (0 = not present, 1 = present)
  7818.  D0h    DWORD    Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
  7819.  D4h    DWORD    -CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
  7820.  D8h    DWORD    DPMI flag (0 = not present, 1 = present)
  7821.  DCh    DWORD    DPMI major version
  7822.  E0h    DWORD    DPMI minor version
  7823.  E4h    DWORD    DPMI capabilities flags (see #0714)
  7824.  E8h    DWORD    VCPI major version
  7825.  ECh    DWORD    VCPI minor version
  7826.  F0h    WORD    VCPI: IRQ0-7 physical base interrupt vector
  7827.  F2h    WORD    VCPI: IRQ8-15 physical base interrupt vector
  7828.  F4h    DWORD    XMS flag (0 = none, 1 = present)
  7829.  F8h    DWORD    XMS major version
  7830.  FCh    DWORD    XMS minor version
  7831. 100h    WORD    application's CS selector
  7832. 102h    WORD    application's DS selector
  7833. 104h    WORD    application's PSP selector
  7834. 106h    WORD    application's environment selector
  7835. 108h    WORD    selector mapping entire first megabyte
  7836. 10Ah    WORD    selector mapping text video memory
  7837. 10Ch    WORD    selector mapping video memory (text for IBM, graphics for NEC)
  7838. 10Eh    WORD    selector mapping Weitek address space, 0000h if not present
  7839. 110h    WORD    selector mapping Cyrix EMC387 address space, 0000h if none
  7840. 112h    WORD    reserved (0)
  7841. 114h    DWORD    real-mode FAR entry point to call to switch to protected mode
  7842.           with no saved context
  7843. 118h    DWORD    size of LDT in bytes
  7844. ---386|DOS-Extender v5.0+ ---
  7845. 11Ch    DWORD    Windows flag (0 = not present, 1 = Windows present)
  7846. 120h    DWORD    Windows major version
  7847. 124h    DWORD    Windows minor version
  7848. 128h    DWORD    Windows mode (0 = real/standard, 1 = enhanced)
  7849. 12Ch    DWORD    OS/2 flag (0 = not present, 1 = OS/2 present)
  7850. 130h    DWORD    OS/2 major version
  7851. 134h    DWORD    OS/2 minor version
  7852. 138h 50 DWORDs    reserved (0)
  7853.  
  7854. Bitfields for flags 1:
  7855. Bit(s)    Description    (Table 0713)
  7856.  0    -NOPAGE specified
  7857.  1    -A20 specified
  7858.  2    -VDISK specified
  7859.  3    -XT specified
  7860.  4    -AT specified
  7861.  5    -MCA specified
  7862.  6    -EISA specified
  7863.  7    -NORMRES specified (NEC only)
  7864.  8    -HIGHRES specified (NEC only)
  7865.  9    set if -SWFGROW1ST, clear if -NOSWFGROW1ST
  7866.  10    -NOVM specified
  7867.  11    -SAVEREGS specified
  7868.  12    unused (clear)
  7869.  13    -NOVCPI specified
  7870.  14    -NOMUL specified
  7871.  15    -NOBMCHK specified
  7872.  16    -NOSPCLMEM or -NOBIM
  7873.  17    -NOPGEXP specified
  7874.  18    -SWAPDEFDISK specified
  7875. ---v3.0+ ---
  7876.  19    -SAVEINTS specified
  7877.  20    -NOLOAD specified
  7878.  21    -PAGELOG specified
  7879.  22    -OPENDENY specified
  7880.  23    -ERRATA17 specified
  7881. ---v4.1+ ---
  7882.  24    -NESTDPMI specified
  7883.  25    -NONESTDPMI specified
  7884.  26    -NODPMI specified
  7885.  27    -NOPCDWEITEK specified
  7886. ---v4.2+ ---
  7887.  28    -WININT21 specified
  7888.  
  7889. Bitfields for DPMI capabilities flags:
  7890. Bit(s)    Description    (Table 0714)
  7891.  0    paging supported
  7892.  1    physical device mapping
  7893.  2    conventional memory mapping
  7894.  3    exceptions restartable
  7895. --------E-212527-----------------------------
  7896. INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
  7897.     AX = 2527h
  7898.     EBX = new status (00h disabled, 01h enabled)
  7899. Return: CF clear
  7900.     EBX = previous state save flag
  7901. SeeAlso: AX=2528h
  7902. --------E-212528-----------------------------
  7903. INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
  7904.     AX = 2528h
  7905.     DS:EBX -> buffer for registers (see #0715)
  7906. Return: CF clear if successful
  7907.         DS:EBX buffer filled
  7908.     CF set on error
  7909.         EAX = error code
  7910.         83h interrupt state save not enabled
  7911.         84h no active interrupt
  7912. SeeAlso: AX=2527h
  7913.  
  7914. Format of Phar Lap buffer for registers:
  7915. Offset    Size    Description    (Table 0715)
  7916.  00h  8 BYTEs    unused
  7917.  08h  4    DWORDs    EAX,EBX,ECX,EDX
  7918.  18h  4 DWORDs    ESI,EDI,EBP,ESP
  7919.  28h  6 WORDs    CS,DS,SS,ES,FS,GS
  7920.  34h    DWORD    EIP
  7921.  38h    DWORD    EFLAGS
  7922. --------E-212529-----------------------------
  7923. INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
  7924.     AX = 2529h
  7925.     ???
  7926. Return: ES:EBX -> parameter block (see #0716)
  7927.     ???
  7928. Note:    details not available at this time
  7929. SeeAlso: AX=252Ah
  7930.  
  7931. Format of Phar Lap program load parameter block:
  7932. Offset    Size    Description    (Table 0716)
  7933.  00h    DWORD    initial EIP
  7934.  04h    WORD    initial CS
  7935.  06h    DWORD    initial ESP
  7936.  0Ah    WORD    initial SS
  7937.  0Ch  4 WORDs    initial DS, ES, FS, GS
  7938.  14h    DWORD    minimum size in bytes of program segment
  7939.  18h    DWORD    bytes of additional memory allocated
  7940.  1Ch    DWORD    flags
  7941.         bit 0: child linked with -UNPRIVILEGED
  7942.         ---v6.0+ ---
  7943.         bit 1: child is PE file instead of .EXP
  7944.         bit 2: loaded file is a DLL
  7945.         bits 3-31 reserved
  7946. ---v6.0+ ---
  7947.  20h    DWORD    module handles (PE files only)
  7948.  24h  7 DWORDs    reserved (0)
  7949. --------E-21252A-----------------------------
  7950. INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
  7951.     AX = 252Ah
  7952.     DS:EDX -> ASCIZ program name
  7953.     ES:EBX -> parameter block (see #0710)
  7954.     ECX = size of LDT buffer in bytes
  7955.     ESI = bit flags
  7956.         bit 0: allow demand paging rather than loading entire program
  7957.         bit 1: demand page from swap file rather than from .EXP
  7958. Return: CF clear if successful
  7959.         EAX = VMM handle or FFFFFFFFh if none
  7960.         ECX = number of descriptors in LDT buffer
  7961.     CF set on error
  7962.         EAX = error code
  7963.         02h file error
  7964.             EBX = file error code (see #0717)
  7965.             ECX = DOS error code if EBX=1,2,3, or 8
  7966.         08h insufficient memory
  7967.             EBX = memory error code (see #0718)
  7968.         80h LDT buffer too small
  7969.         87h called twice without intervening call to AX=2531h
  7970. SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h
  7971.  
  7972. (Table 0717)
  7973. Values for Phar Lap file error code:
  7974.  01h    DOS open error
  7975.  02h    DOS seek error
  7976.  03h    DOS read error
  7977.  04h    not an .EXP or .REX file
  7978.  05h    invalid file format
  7979.  06h    -OFFSET is not a multiple of 64K
  7980.  07h    -NOPAGE incompatible with -REALBREAK/-OFFSET
  7981.  08h    DOS error loading .EXE file
  7982.  
  7983. (Table 0718)
  7984. Values for Phar Lap memory error code:
  7985.  01h    out of physical memory
  7986.  02h    out of swap space
  7987.  04h    unable to change extended memory allocation
  7988.  05h    -MAXPGMMEM exceeded
  7989.  06h    insufficient low memory to REALBREAK value
  7990.  07h    insufficient low memory for PSP and environment
  7991. --------E-21252BBH00-------------------------
  7992. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
  7993.     AX = 252Bh
  7994.     BH = 00h
  7995.     ???
  7996. Return: ???
  7997. --------E-21252BBH01-------------------------
  7998. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
  7999.     AX = 252Bh
  8000.     BH = 01h
  8001.     ???
  8002. Return: ???
  8003. --------E-21252BBH02-------------------------
  8004. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
  8005.     AX = 252Bh
  8006.     BH = 02h
  8007.     ???
  8008. Return: ???
  8009. --------E-21252BBH03-------------------------
  8010. INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
  8011.     AX = 252Bh
  8012.     BH = 03h
  8013.     ???
  8014. Return: ???
  8015. SeeAlso: AX=252Bh/BL=0Bh
  8016. --------E-21252BBH04-------------------------
  8017. INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
  8018.     AX = 252Bh
  8019.     BH = 04h
  8020.     ???
  8021. Return: ???
  8022. Note:    returns one word per page
  8023. SeeAlso: #0719
  8024.  
  8025. Bitfields for Phar Lap page information:
  8026. Bit(s)    Description    (Table 0719)
  8027.  7    mapped to read/write data file
  8028.  6    mapped to read-only data file
  8029.  5    swapped to disk
  8030.  4    locked
  8031.  3-0    page type
  8032.     0 unmapped
  8033.     1 allocated
  8034.     2 physical device page
  8035. --------E-21252B-----------------------------
  8036. INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
  8037.     AX = 252Bh
  8038.     BH = function
  8039.         05h lock pages
  8040.         06h unlock pages
  8041.     BL = address type
  8042.         00h linear address
  8043.         ECX = linear start address of memory region
  8044.         01h segmented address
  8045.         ES:ECX -> start of memory region
  8046.     EDX = size of memory region in bytes
  8047. Return: CF clear if successful
  8048.     CF set on error
  8049. Note:    this function is also supported by FlashTek X-32VM; if X-32 is not
  8050.       using virtual memory, this function always succeeds
  8051. --------E-21252B-----------------------------
  8052. INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
  8053.     AX = 252Bh
  8054.     BH = function (07h,08h)
  8055.     ???
  8056. Return: ???
  8057. --------E-21252BBH09-------------------------
  8058. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
  8059.     AX = 252Bh
  8060.     BH = 09h
  8061.     BL = subfunction
  8062.         00h get page table entry by linear address
  8063.         ECX = linear address for which to get page table entry
  8064.         01h get page table entry by logical address
  8065.         ES:ECX = address for which to get page table entry
  8066. Return: CF clear if successful
  8067.         EAX = page table entry
  8068.         EBX = additional page table information
  8069.     CF set on error
  8070.         EAX = error code
  8071.         0009h invalid address
  8072.         0082h running under DPMI
  8073. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah
  8074. --------E-21252BBH0A-------------------------
  8075. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
  8076.     AX = 252Bh
  8077.     BH = 0Ah
  8078.     BL = subfunction
  8079.         00h set page table entry for linear address
  8080.         ECX = linear address for which to get page table entry
  8081.         01h set page table entry for logical address
  8082.         ES:ECX = address for which to get page table entry
  8083.     ESI = page table entry
  8084.     EDI = additional page table information
  8085. Return: CF clear if successful
  8086.     CF set on error
  8087.         EAX = error code
  8088.         0009h invalid address
  8089.         0082h running under DPMI
  8090. SeeAlso: AX=252Bh/BH=09h
  8091. --------E-21252BBH0B-------------------------
  8092. INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
  8093.     AX = 252Bh
  8094.     BH = 0Bh
  8095.     BL = subfunction
  8096.         00h by linear address
  8097.         ECX = linear address at which to map data file
  8098.         01h by logical address
  8099.         ES:ECX = logical address at which to map data file
  8100.     EDX = number of bytes to map
  8101.     DS:ESI -> mapping structure (see #0720)
  8102.     DS:EDI -> ASCIZ filename
  8103. Return: CF clear if successful
  8104.     CF set on error
  8105.         EAX = error code
  8106.         0002h file error
  8107.             ECX = phase (01h opening file, 02h seeking, 03h reading)
  8108.             EDX = error code returned by DOS
  8109.         0009h invalid address
  8110.         0081h invalid parameters or 386|VMM not present
  8111.         0086h all 386|VMM file handles already in use
  8112. SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h
  8113.  
  8114. Format of Phar Lap mapping structure:
  8115. Offset    Size    Description    (Table 0720)
  8116.  00h    DWORD    starting file offset to be mapped
  8117.  04h    DWORD    DOS file access and sharing modes (see #0750 at INT 21/AH=3Dh)
  8118. --------E-21252C-----------------------------
  8119. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
  8120.     AX = 252Ch
  8121.     BX = segment selector
  8122.     ECX = number of 4K pages to add
  8123. Return: CF clear if successful
  8124.         EAX = offset in segment of beginning of unmapped pages
  8125.     CF set on error
  8126.         EAX = error code
  8127.         08h insufficent memory
  8128.         09h invalid selector
  8129.         82h not supported by current DPMI
  8130. --------E-21252D-----------------------------
  8131. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
  8132.     AX = 252Dh
  8133.     EBX = VMM file handle
  8134. Return: CF clear if successful
  8135.     CF set on error
  8136.         EAX = error code (81h invalid VMM handle)
  8137. --------E-21252E-----------------------------
  8138. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
  8139.     AX = 252Eh
  8140.     CL = direction (00h get parameters, 01h set parameters)
  8141.     DS:EBX -> parameter buffer (see #0721)
  8142. Return: CF clear if successful
  8143.     CF set on error
  8144.         EAX = error code (81h bad parameter value)
  8145.  
  8146. Format of Phar Lap VMM parameter buffer:
  8147. Offset    Size    Description    (Table 0721)
  8148.  00h    DWORD    flags
  8149.         bit 0: page fault logging enabled
  8150.         ---v5.0+ ---
  8151.         bit 1: swap extender to disk during DOS EXEC call
  8152.         bit 2: don't zero allocated memory
  8153.  04h    DWORD    scan period for page aging, in milliseconds
  8154.  08h    DWORD    maximum size (in bytes) to check on each page scan
  8155.  0Ch 52 BYTEs    unused
  8156. --------E-21252F-----------------------------
  8157. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
  8158.     AX = 252Fh
  8159.     DS:EBX -> data to be written
  8160.     CX = size of data in bytes
  8161. Return: CF clear if successful
  8162.     CF set on error
  8163.         EAX = error code (85h no page log file or not 386/VMM)
  8164. --------E-212530-----------------------------
  8165. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
  8166.     AX = 2530h
  8167.     ECX = size of data buffer in bytes (1024 to 65536)
  8168. Return: CF clear if successful
  8169.     CF set on error
  8170.         EAX = error code
  8171.         08h insufficient low memory
  8172.         81h invalid size
  8173. SeeAlso: AX=2517h
  8174. --------E-212531-----------------------------
  8175. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
  8176.     AX = 2531h
  8177.     BX = segment selector
  8178.     ECX = direction (00h read, 01h write)
  8179.     DS:EDX -> 8-byte buffer for descriptor contents
  8180. Return: CF clear if successful
  8181.     CF set on error
  8182.         EAX = error code
  8183.         81h invalid selector
  8184.         82h DPMI running, or not a code or data segment
  8185. --------E-212532-----------------------------
  8186. INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
  8187.     AX = 2532h
  8188.     CL = exception number (00h-0Fh)
  8189. Return: CF clear if successful
  8190.         ES:EBX = CS:EIP of current exception handler
  8191.     CF set on error (CL > 0Fh)
  8192. Notes:    this call is also supported by the FlashTek X-32VM extender
  8193.     this function is incompatible with 386|VMM; use AX=2522h instead
  8194. SeeAlso: AX=2522h,AX=2533h
  8195. --------E-212533-----------------------------
  8196. INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
  8197.     AX = 2533h
  8198.     CL = exception number (00h-0Fh)
  8199.     DS:EDX = CS:EIP of new exception handler
  8200. Return: CF clear if successful
  8201.     CF set on error (CL > 0Fh)
  8202. Notes:    this call is also supported by the FlashTek X-32VM extender
  8203.     this function is incompatible with 386|VMM; use AX=2522h instead
  8204. SeeAlso: AX=2522h,AX=2532h
  8205. --------E-212534-----------------------------
  8206. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
  8207.     AX = 2534h
  8208. Return: CF clear
  8209.     EAX = interrupt state (00h disabled, 01h enabled)
  8210. --------E-212535-----------------------------
  8211. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
  8212.     AX = 2535h
  8213.     EBX = direction (00h read registers, 01h write)
  8214.     DS:EDX -> system register record (see #0722)
  8215. Return: CF clear
  8216. Note:    this call is only available under MS Windows if PHARLAP.386 VDD is
  8217.       installed
  8218.  
  8219. Format of Phar Lap system register record:
  8220. Offset    Size    Description    (Table 0722)
  8221.  00h    DWORD    CR0
  8222.  04h  4 DWORDs    DR0,DR1,DR2,DR3
  8223.  14h  2 DWORDs    reserved
  8224.  1Ch  2 DWORDs    DR6,DR7
  8225.  24h  3 DWORDs    reserved
  8226. --------E-212536----------------------------
  8227. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
  8228.     AX = 2536h
  8229.     EBX = bit flags
  8230.         bit 0: modifying conventional memory rather than extended memory
  8231.         bit 1: setting maximum memory usage rather than minimum
  8232.     ECX = new limit in 4K pages
  8233. Return: CF clear if successful
  8234.         EAX = new limit
  8235.     CF set on error
  8236.         EAX = error code (08h memory error or -NOPAGE set)
  8237.         EBX = maximum limit in pages
  8238.         ECX = minimum limit in pages
  8239. --------E-212537----------------------------
  8240. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
  8241.     AX = 2537h
  8242.     BX = number of paragraphs to allocate
  8243. Return: CF clear if successful
  8244.         AX = real-mode segment of allocated block
  8245.     CF set on error
  8246.         AX = error code
  8247.         07h MS-DOS memory chain corrupted
  8248.         08h insufficient low memory
  8249.         BX = size in paragraphs of largest free block
  8250. SeeAlso: AH=48h
  8251. --------E-212538----------------------------
  8252. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
  8253.     AX = 2538h
  8254.     DS:EBX -> buffer for registers (see #0715)
  8255.     ECX = register record to retrieve
  8256.         00h first interrupt state
  8257.         01h next interrupt state
  8258.         EDX = handle for current interrupt state
  8259. Return: CF clear if successful
  8260.         DS:EBX buffer filled
  8261.         EDX = handle of current interrupt state
  8262.         ESI = number of interrupt which occurred
  8263.     CF set on error
  8264.         EAX = error code
  8265.         81h invalid handle in EDX
  8266.         83h register saving not enabled
  8267.         84h no more interrupt states
  8268. SeeAlso: AX=2527h,AX=2528h
  8269. --------E-212539----------------------------
  8270. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
  8271.     AX = 2539h
  8272.     BX = MS-DOS file handle for open file
  8273. Return: CF clear if successful
  8274.         EAX = offset of .EXP header in file
  8275.     CF set on error
  8276.         EAX = error code (02h file error)
  8277.         EBX = file error code
  8278.         02h DOS error seeking
  8279.         03h DOS error reading
  8280.         04h invalid file type
  8281.         05h invalid file format
  8282.         ECX = DOS error code if EBX=02h or 03h
  8283.     current file position in file modified
  8284. --------E-21253A----------------------------
  8285. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
  8286.     AX = 253Ah
  8287.     ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
  8288.         an error
  8289. Return: CF clear
  8290.     ES:EBX -> previous handler
  8291. SeeAlso: AH=4Ah
  8292. --------E-21253B----------------------------
  8293. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
  8294.     AX = 253Bh
  8295.     DS:EBX -> buffer containing register contents (see #0715)
  8296. Return: never returns
  8297. SeeAlso: AX=2528h
  8298. --------E-21253C-----------------------------
  8299. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
  8300.     AX = 253Ch
  8301. Return: CF clear
  8302.     EAX = old size of swap file in bytes
  8303.     EBX = new size of swap file in bytes
  8304. --------E-21253D-----------------------------
  8305. INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
  8306.     AX = 253Dh
  8307.     BL = interrupt number
  8308.     ECX = direction (0 = read, 1 = write)
  8309.     DS:EDX -> 8-byte buffer for descriptor
  8310. Return: CF clear if successful
  8311.         DS:EDX filled if reading
  8312.     CF set on error
  8313.         EAX = error code (0082h if running under DPMI)
  8314. Desc:    access hardware-level IDT rather than the internal 386/DOS-Extender
  8315.       shadow IDT
  8316. Notes:    this call will always fail under DPMI because it is not possible to
  8317.       access the IDT
  8318.     the descriptor is not checked when writing
  8319.     this call can normally be used only by programs running in ring 0
  8320.       because the processor does not allow an interrupt to be vectored to
  8321.       a less privileged ring
  8322. --------E-21253F-----------------------------
  8323. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
  8324.     AX = 253Fh
  8325.     BX = LDT descriptor to allocate (0000h for any)
  8326.     ???
  8327. Return: ???
  8328. --------E-212540-----------------------------
  8329. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
  8330.     AX = 2540h
  8331.     ???
  8332. Return: ???
  8333. --------E-212544-----------------------------
  8334. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
  8335.     AX = 2544h
  8336.     ???
  8337. Return: ???
  8338. --------E-212545-----------------------------
  8339. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
  8340.     AX = 2545h
  8341.     ECX = direction (00h get, 01h set)
  8342.     ???
  8343. Return: ???
  8344. --------E-212546-----------------------------
  8345. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
  8346.     AX = 2546h
  8347.     ???
  8348. Return: ???
  8349. --------E-2125C0-----------------------------
  8350. INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
  8351.     AX = 25C0h
  8352.     BX = number of 16-byte paragraphs of MS-DOS memory requested
  8353. Return: CF clear if successful
  8354.         AX = real-mode paragraph address of memory
  8355.     CF set on error
  8356.         AX = error code
  8357.         07h MS-DOS memory control blocks destroyed
  8358.         08h insufficient memory
  8359.         BX = size in paragraphs of largest available memory block
  8360. SeeAlso: AX=25C1h,AX=25C2h
  8361. --------E-2125C1-----------------------------
  8362. INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
  8363.     AX = 25C1h
  8364.     CX = real-mode paragraph address of memory block to free
  8365. Return: CF clear if successful
  8366.         EAX destroyed
  8367.     CF set on error
  8368.         AX = error code
  8369.         07h MS-DOS memory control blocks destroyed
  8370.         09h invalid memory block address in CX
  8371. SeeAlso: AX=25C0h,AX=25C2h
  8372. --------E-2125C2-----------------------------
  8373. INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
  8374.     AX = 25C2h
  8375.     BX = new requested block size in paragraphs
  8376.     CX = real-mode paragraph address of memory block to modify
  8377. Return: CF clear if successful
  8378.         EAX destroyed
  8379.     CF set on error
  8380.         AX = error code
  8381.         07h MS-DOS memory control blocks destroyed
  8382.         08h insufficient memory
  8383.         09h invalid memory block address in CX
  8384.         BX = size in paragraphs of largest available memory block
  8385. SeeAlso: AX=25C0h,AX=25C1h
  8386. --------E-2125C3-----------------------------
  8387. INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
  8388.     AX = 25C3h
  8389.     ES:EBX -> pointer to parameter block (see #0724)
  8390.     DS:EDX -> pointer to ASCIZ program filename
  8391. Return: CF clear if successful
  8392.         all registers unchanged
  8393.     CF set on error
  8394.         EAX = error code (see #0723)
  8395.  
  8396. (Table 0723)
  8397. Values for Phar Lap error code:
  8398.  01h    function code in AL is invalid ???
  8399.  02h    file not found or path invalid
  8400.  05h    access denied
  8401.  08h    insufficient memory to load program
  8402.  0Ah    environment invalid
  8403.  0Bh    invalid file format
  8404.  
  8405. Format of parameter block:
  8406. Offset    Size    Description    (Table 0724)
  8407.  00h    DWORD    32-bit offset of environment string
  8408.  04h    WORD    segment selector of environment string
  8409.  06h    DWORD    32-bit offset of command-tail string
  8410.  0Ah    WORD    segment selector of command-tail string
  8411. --------D-2126-------------------------------
  8412. INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
  8413.     AH = 26h
  8414.     DX = segment at which to create PSP (see #0725)
  8415. Return: AL destroyed
  8416. Notes:    new PSP is updated with memory size information; INTs 22h, 23h, 24h
  8417.       taken from interrupt vector table; the parent PSP field is set to 0
  8418.     (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
  8419.       copy
  8420. SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
  8421.  
  8422. Format of Program Segment Prefix (PSP):
  8423. Offset    Size    Description    (Table 0725)
  8424.  00h  2 BYTEs    INT 20 instruction for CP/M CALL 0 program termination
  8425.         the CDh 20h here is often used as a signature for a valid PSP
  8426.  02h    WORD    segment of first byte beyond memory allocated to program
  8427.  04h    BYTE    (DOS) unused filler
  8428.         (OS/2) count of fake DOS version returns
  8429.  05h    BYTE    CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
  8430.         BUG: (DOS 2+ DEBUG) PSPs created by DEBUG point at 000BEh
  8431.  06h    WORD    CP/M compatibility--size of first segment for .COM files
  8432.  08h  2 BYTEs    remainder of FAR JMP at 05h
  8433.  0Ah    DWORD    stored INT 22 termination address
  8434.  0Eh    DWORD    stored INT 23 control-Break handler address
  8435.  12h    DWORD    DOS 1.1+ stored INT 24 critical error handler address
  8436.  16h    WORD    segment of parent PSP
  8437.  18h 20 BYTEs    DOS 2+ Job File Table, one byte per file handle, FFh = closed
  8438.  2Ch    WORD    DOS 2+ segment of environment for process (see #0726)
  8439.  2Eh    DWORD    DOS 2+ process's SS:SP on entry to last INT 21 call
  8440.  32h    WORD    DOS 3+ number of entries in JFT (default 20)
  8441.  34h    DWORD    DOS 3+ pointer to JFT (default PSP:0018h)
  8442.  38h    DWORD    DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
  8443.         used by SHARE in DOS 3.3
  8444.  3Ch    BYTE    DOS 4+ (DBCS) interim console flag (see AX=6301h)
  8445.         Novell DOS 7 DBCS interim flag as set with AX=6301h
  8446.         (possibly also used by Far East MS-DOS 3.2-3.3)
  8447.  3Dh    BYTE    (APPEND) TrueName flag (see INT 2F/AX=B711h)
  8448.  3Eh    BYTE    (Novell NetWare) flag: next byte initialized if CEh
  8449.         (OS/2) capabilities flag
  8450.  3Fh    BYTE    (Novell NetWare) Novell task number if previous byte is CEh
  8451.  40h  2 BYTEs    DOS 5+ version to return on INT 21/AH=30h
  8452.  42h    WORD    (MSWindows3) selector of next PSP (PDB) in linked list
  8453.         Windows keeps a linked list of Windows programs only
  8454.  44h    WORD    (MSWindows3) "PDB_Partition"
  8455.  46h    WORD    (MSWindows3) "PDB_NextPDB"
  8456.  48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
  8457.  49h    BYTE    unused by DOS versions <= 6.00
  8458.  4Ch    WORD    (MSWindows3) "PDB_EntryStack"
  8459.  4Eh  2 BYTEs    unused by DOS versions <= 6.00
  8460.  50h  3 BYTEs    DOS 2+ service request (INT 21/RETF instructions)
  8461.  53h  2 BYTEs    unused in DOS versions <= 6.00
  8462.  55h  7 BYTEs    unused in DOS versions <= 6.00; can be used to make first FCB
  8463.           into an extended FCB
  8464.  5Ch 16 BYTEs    first default FCB, filled in from first commandline argument
  8465.         overwrites second FCB if opened
  8466.  6Ch 16 BYTEs    second default FCB, filled in from second commandline argument
  8467.           overwrites beginning of commandline if opened
  8468.  7Ch  4 BYTEs    unused
  8469.  80h 128 BYTEs    commandline / default DTA
  8470.         command tail is BYTE for length of tail, N BYTEs for the tail,
  8471.           followed by a BYTE containing 0Dh
  8472. Notes:    in DOS v3+, the limit on simultaneously open files may be increased by
  8473.       allocating memory for a new open file table, filling it with FFh,
  8474.       copying the first 20 bytes from the default table, and adjusting the
  8475.       pointer and count at 34h and 32h.  However, DOS will only copy the
  8476.       first 20 file handles into a child PSP (including the one created on
  8477.       EXEC).
  8478.     in an OS/2 DOS box, values of D0h-FEh in the open file table indicate
  8479.       device drivers
  8480.     network redirectors based on the original MS-Net implementation use
  8481.       values of 80h-FEh in the open file table to indicate remote files;
  8482.       Novell NetWare also uses values from FEh down to 80h or one more than
  8483.       FILES= (whichever is greater) to indicate remote files (except on
  8484.       OS/2, where is uses CFh down to 80h)
  8485.     MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
  8486.       high; the first FCB is empty and the second contains the first
  8487.       parameter
  8488.     some DOS extenders place protected-mode values in various PSP fields
  8489.       such as the "parent" field, which can confuse PSP walkers.  Always
  8490.       check either for the CDh 20h signature or that the suspected PSP is
  8491.       at the beginning of a memory block which owns itself (the preceding
  8492.       paragraph should be a valid MCB with "owner" the same as the
  8493.       suspected PSP).
  8494.     Novell NetWare updates the fields at offsets 3Eh and 3Fh without
  8495.       checking that a legal PSP segment is current; see AH=50h for further
  8496.       discussion
  8497.     for 4DOS and Windows95, the command tail may be more than 126
  8498.       characters; in that case, the length byte will be set to 7Fh (with
  8499.       an 0Dh in the     127th position at offset FFh), and the first 126
  8500.       characters will be stored in the PSP, with the entire command line
  8501.       in the environment variable CMDLINE; under at least some versions
  8502.       of 4DOS, the byte at offset FFh is *not* set to 0Dh, so there is no
  8503.       terminating carriage return in the PSP's command tail.
  8504.  
  8505. Format of environment block:
  8506. Offset    Size    Description    (Table 0726)
  8507.  00h  N BYTEs    first environment variable, ASCIZ string of form "var=value"
  8508.       N BYTEs    second environment variable, ASCIZ string
  8509.     ...
  8510.       N BYTEs    last environment variable, ASCIZ string of form "var=value"
  8511.     BYTE    00h
  8512. ---DOS 3.0+ ---
  8513.     WORD    number of strings following environment (normally 1)
  8514.       N BYTEs    ASCIZ full pathname of program owning this environment
  8515.         other strings may follow
  8516. --------D-2127-------------------------------
  8517. INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
  8518.     AH = 27h
  8519.     CX = number of records to read
  8520.     DS:DX -> opened FCB (see #0693)
  8521. Return: AL = status
  8522.         00h successful, all records read
  8523.         01h end of file, no data read
  8524.         02h segment wrap in DTA, no data read
  8525.         03h end of file, partial read
  8526.     Disk Transfer Area filled with records read from file
  8527.     CX = number of records read (return AL = 00h or 03h)
  8528. Notes:    read begins at current file position as specified in FCB; the file
  8529.       position is updated after reading
  8530.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  8531. SeeAlso: AH=21h,AH=28h,AH=3Fh
  8532. --------D-2128-------------------------------
  8533. INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
  8534.     AH = 28h
  8535.     CX = number of records to write
  8536.     DS:DX -> opened FCB (see #0693)
  8537.     Disk Transfer Area contains records to be written
  8538. Return: AL = status
  8539.         00h successful
  8540.         01h disk full or file read-only
  8541.         02h segment wrap in DTA
  8542.     CX = number of records written
  8543. Notes:    write begins at current file position as specified in FCB; the file
  8544.       position is updated after writing
  8545.     if CX = 0000h on entry, no data is written; instead the file size is
  8546.       adjusted to be the same as the file position specified by the random
  8547.       record and record size fields of the FCB
  8548.     if the data to be written is less than a disk sector, it is copied into
  8549.       a DOS disk buffer, to be written out to disk at a later time
  8550.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  8551. SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h/BX=0000h
  8552. --------D-2129-------------------------------
  8553. INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
  8554.     AH = 29h
  8555.     AL = parsing options (see #0727)
  8556.     DS:SI -> filename string (both '*' and '?' wildcards OK)
  8557.     ES:DI -> buffer for unopened FCB
  8558. Return: AL = result code
  8559.         00h successful parse, no wildcards encountered
  8560.         01h successful parse, wildcards present
  8561.         FFh failed (invalid drive specifier)
  8562.     DS:SI -> first unparsed character
  8563.     ES:DI buffer filled with unopened FCB (see #0693)
  8564. Notes:    asterisks expanded to question marks in the FCB
  8565.     all processing stops when a filename terminator is encountered
  8566.     cannot be used with filespecs which include a path (DOS 2+)
  8567.     Novell NetWare monitors the result code since an 'invalid drive' may
  8568.       signal an attempt to reconnect a network drive; if there are no
  8569.       connections to the specified drive, NetWare attempts to build a
  8570.       connection and map the drive to the SYS:LOGIN directory
  8571. SeeAlso: AH=0Fh,AH=16h,AH=26h
  8572.  
  8573. Bitfields for parsing options:
  8574. Bit(s)    Description    (Table 0727)
  8575.  0    skip leading separators
  8576.  1    use existing drive number in FCB if no drive is specified, instead of
  8577.       setting field to zero
  8578.  2    use existing filename in FCB if no base name is specified, instead of
  8579.       filling field with blanks
  8580.  3    use existing extension in FCB if no extension is specified, instead of
  8581.       filling field with blanks
  8582.  4-7    reserved (0)
  8583. --------D-212A-------------------------------
  8584. INT 21 - DOS 1+ - GET SYSTEM DATE
  8585.     AH = 2Ah
  8586. Return: CX = year (1980-2099)
  8587.     DH = month
  8588.     DL = day
  8589. ---DOS 1.10+---
  8590.     AL = day of week (00h=Sunday)
  8591. SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h"Novell",INT 1A/AH=04h,INT 2F/AX=120Dh
  8592. --------D-212B-------------------------------
  8593. INT 21 - DOS 1+ - SET SYSTEM DATE
  8594.     AH = 2Bh
  8595.     CX = year (1980-2099)
  8596.     DH = month
  8597.     DL = day
  8598. Return: AL = status
  8599.         00h successful
  8600.         FFh invalid date, system date unchanged
  8601. Note:    DOS 3.3+ also sets CMOS clock
  8602. SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
  8603. --------E-212B--CX4149-----------------------
  8604. INT 21 - AI Architects - ??? - INSTALLATION CHECK
  8605.     AH = 2Bh
  8606.     CX = 4149h ('AI')
  8607.     DX = 413Fh ('A?')
  8608. Return: AL <> FFh if installed
  8609. Note:    Borland's TKERNEL makes this call
  8610. --------c-212B--CX4358-----------------------
  8611. INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
  8612.     AH = 2Bh
  8613.     CX = 4358h ('CX')
  8614. Return: AL = FFh if PC-Kwik/PC-Cache not installed
  8615.     AL = 00h if installed
  8616.         CF clear
  8617.         CX = 6378h ('cx')
  8618.         BX = ???
  8619.         DX = version (DH = major version, DL = binary minor version)
  8620. Note:    PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
  8621.       Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
  8622.       to PC-Kwik v3.20)
  8623. SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
  8624. Index:    PC-Cache;installation check|Qualitas Qcache;installation check
  8625. Index:    installation check;PC-Cache 5.x|installation check;Qualitas Qcache
  8626. --------Q-212B--CX4445-----------------------
  8627. INT 21 - DESQview - INSTALLATION CHECK
  8628.     AH = 2Bh
  8629.     CX = 4445h ('DE')
  8630.     DX = 5351h ('SQ')
  8631.     AL = subfunction (DV v2.00+)
  8632.         01h get version
  8633.         Return: BX = version (BH = major, BL = minor)
  8634.         Note: early copies of v2.00 return 0002h
  8635.         02h get shadow buffer info, and start shadowing
  8636.         Return: BH = rows in shadow buffer
  8637.             BL = columns in shadow buffer
  8638.             DX = segment of shadow buffer
  8639.         04h get shadow buffer info
  8640.         Return: BH = rows in shadow buffer
  8641.             BL = columns in shadow buffer
  8642.             DX = segment of shadow buffer
  8643.         05h stop shadowing
  8644. Return: AL = FFh if DESQview not installed
  8645. Notes:    in DESQview v1.x, there were no subfunctions; this call only identified
  8646.       whether or not DESQview was loaded.  DESQview v2.52 performs function
  8647.       01h for all subfunction requests 0Ch and higher and appears to ignore
  8648.       all lower-numbered functions not listed here.
  8649.     DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
  8650.       is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
  8651.       v2.00.
  8652. BUG:    subfunction 05h does not appear to work correctly in DESQview 2.52
  8653. SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
  8654. --------U-212B--CX454C-----------------------
  8655. INT 21 - ELRES v1.1 - INSTALLATION CHECK
  8656.     AH = 2Bh
  8657.     CX = 454Ch ('EL')
  8658.     DX = 5253h ('RS')
  8659. Return: ES:BX -> ELRES history structure (see #0728)
  8660.     DX = DABEh (signature, DAve BEnnett)
  8661. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  8662.       Bennett which stores recent errorlevel values, allows them to be
  8663.       retrieved for use in batch files, and can place them in an
  8664.       environment variable
  8665. SeeAlso: AH=4Bh"ELRES",AH=4Dh
  8666.  
  8667. Format of ELRES history structure:
  8668. Offset    Size    Description    (Table 0728)
  8669.  00h    WORD    number of return codes which can be stored by following buffer
  8670.  02h    WORD    current position in buffer (treated as a ring)
  8671.  04h  N BYTEs    ELRES buffer
  8672. --------l-212B00CX5643-----------------------
  8673. INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
  8674.     AX = 2B00h
  8675.     CX = 5643h ('VC')
  8676.     DX = 4F4Dh ('OM')
  8677. Return: AL = 0
  8678.     ES:BX -> left panel data structure
  8679. Program: Volcov Commander is a shell for MS-DOS by Vsevolod V. Volkov
  8680. SeeAlso: AX=2B01h/CX=5643h,AX=2B02h/CX=5643h
  8681. --------l-212B01CX5643-----------------------
  8682. INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
  8683.     AX = 2B01h
  8684.     CX = 5643h ('VC')
  8685.     DX = 4F4Dh ('OM')
  8686. Return: AL = 0
  8687.     ES:BX -> right panel data structure
  8688. SeeAlso: AX=2B00h/CX=5643h,AX=2B02h/CX=5643h
  8689. --------l-212B02CX5643-----------------------
  8690. INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
  8691.     AX = 2B02h
  8692.     CX = 5643h ('VC')
  8693.     DX = 4F4Dh ('OM')
  8694. Return: AL = 0
  8695.     ES:BX -> global variables
  8696. SeeAlso: AX=2B00h/CX=5643h,AX=2B01h/CX=5643h
  8697. --------m-212B01CX444D-----------------------
  8698. INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
  8699.     AX = 2B01h
  8700.     CX = 444Dh ('DM')
  8701.     DX = 4158h ('AX')
  8702. Return: AX = 0000h if installed
  8703.         BX = version??? (0002h)
  8704.         CX = 4845h ('HE')
  8705.         DX = 5245h ('RE')
  8706.         ES = DOS-UP driver segment
  8707. --------T-212B01CX5441-----------------------
  8708. INT 21 - TAME v2.10+ - INSTALLATION CHECK
  8709.     AX = 2B01h
  8710.     CX = 5441h ('TA')
  8711.     DX = 4D45h ('ME')
  8712. ---v2.60---
  8713.     BH = ???
  8714.         00h skip ???, else do
  8715. Return: AL = 02h if installed
  8716.     ES:DX -> data area in TAME-RES (see #0729,#0733,#0735)
  8717. Program: TAME is a shareware program by David G. Thomas which gives up CPU
  8718.       time to other partitions under a multitasker when the current
  8719.       partition's program incessantly polls the keyboard or system time
  8720.  
  8721. Format of TAME 2.10-2.20 data area:
  8722. Offset    Size    Description    (Table 0729)
  8723.  00h    BYTE    data structure minor version number (01h in TAME 2.20)
  8724.  01h    BYTE    data structure major version number (07h in TAME 2.20)
  8725.  02h    DWORD    number of task switches
  8726.  06h    DWORD    number of keyboard polls
  8727.  0Ah    DWORD    number of time polls
  8728.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  8729.  12h    DWORD    original INT 10h
  8730.  16h    DWORD    original INT 14h
  8731.  1Ah    DWORD    original INT 15h
  8732.  1Eh    DWORD    original INT 16h
  8733.  22h    DWORD    original INT 17h
  8734.  26h    DWORD    original INT 21h
  8735.  2Ah    DWORD    original INT 28h
  8736.  2Eh    WORD    offset of TAME INT 10h handler
  8737.  30h    WORD    offset of TAME INT 14h handler
  8738.  32h    WORD    offset of TAME INT 15h handler
  8739.  34h    WORD    offset of TAME INT 16h handler
  8740.  36h    WORD    offset of TAME INT 17h handler
  8741.  38h    WORD    offset of TAME INT 21h handler
  8742.  3Ah    WORD    offset of TAME INT 28h handler
  8743.  3Ch    WORD    X in /max:X,Y or /freq:X,Y
  8744.  3Eh    WORD    Y in /max:X,Y or /freq:X,Y
  8745.  40h    WORD    number of polls remaining before next task switch
  8746.  42h    WORD    /KEYIDLE value
  8747.  44h    BYTE    interrupts already grabbed by TAME (see #0730)
  8748.  45h    BYTE    flags for interrupts which may be acted on (same bits as above)
  8749.  46h    BYTE    TAME enabled (01h) or disabled (00h)
  8750.  47h    BYTE    /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
  8751.  48h    BYTE    /NOTIMER (01h) or /TIMER (00h)
  8752.  49h    BYTE    window or task number for this task
  8753.  4Ah    BYTE    multitasker type (see #0731)
  8754.  4Bh    BYTE    type of task switching selected
  8755.         bit 0: DESQview???
  8756.         bit 1: DoubleDOS???
  8757.         bit 2: TopView???
  8758.         bit 3: KeySwitch
  8759.         bit 4: HLT instruction
  8760.  4Ch    BYTE    ???
  8761.  4Dh    BYTE    flags
  8762.         bit 1: /FREQ instead of /MAX
  8763.  4Eh    BYTE    /FG: value
  8764.  4Fh    BYTE    task switches left until next FGONLY DESQview API call
  8765.  50h    BYTE    ???
  8766.  
  8767. Bitfields for interrupts already grabbed by TAME:
  8768. Bit(s)    Description    (Table 0730)
  8769.  0    INT 10h
  8770.  1    INT 14h
  8771.  2    INT 15h
  8772.  3    INT 16h
  8773.  4    INT 17h
  8774.  5    INT 21h
  8775.  6    INT 28h
  8776.  
  8777. (Table 0731)
  8778. Values for multitasker type:
  8779.  01h    DESQview
  8780.  02h    DoubleDOS
  8781.  03h    TopView
  8782.  04h    OmniView
  8783.  05h    VM/386
  8784.  
  8785. Bitfields for type of task switching selected:
  8786. Bit(s)    Description    (Table 0732)
  8787.  0    DESQview
  8788.  1    DoubleDOS
  8789.  2    TopView
  8790.  3    OmniView
  8791.  4    KeySwitch
  8792.  5    HLT instruction
  8793.  
  8794. Format of TAME 2.30 data area:
  8795. Offset    Size    Description    (Table 0733)
  8796.  00h    BYTE    data structure minor version number (02h in TAME 2.30)
  8797.  01h    BYTE    data structure major version number (0Ah in TAME 2.30)
  8798.  02h    DWORD    number of task switches
  8799.  06h    DWORD    number of keyboard polls
  8800.  0Ah    DWORD    number of time polls
  8801.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  8802.  12h    DWORD    time of last /CLEAR or TAME-RES load
  8803.  16h    DWORD    time yielded
  8804.  1Ah    DWORD    time spent polling
  8805.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  8806.  22h    DWORD    original INT 10h
  8807.  26h    DWORD    original INT 14h
  8808.  2Ah    DWORD    original INT 15h
  8809.  2Eh    DWORD    original INT 16h
  8810.  32h    DWORD    original INT 17h
  8811.  36h    DWORD    original INT 21h
  8812.  3Ah    DWORD    original INT 28h
  8813.  3Eh    WORD    offset of TAME INT 10h handler
  8814.  40h    WORD    offset of TAME INT 14h handler
  8815.  42h    WORD    offset of TAME INT 15h handler
  8816.  44h    WORD    offset of TAME INT 16h handler
  8817.  46h    WORD    offset of TAME INT 17h handler
  8818.  48h    WORD    offset of TAME INT 21h handler
  8819.  4Ah    WORD    offset of TAME INT 28h handler
  8820.  4Ch    WORD    X in /max:X,Y or /freq:X,Y
  8821.  4Eh    WORD    Y in /max:X,Y or /freq:X,Y
  8822.  50h    WORD    number of polls remaining before next task switch
  8823.  52h    WORD    /KEYIDLE value
  8824.  54h    WORD    /FG: value
  8825.  56h    WORD    task switches left until next FGONLY DESQview API call
  8826.  58h    WORD    multitasker version
  8827.  5Ah    WORD    virtual screen segment
  8828.  5Ch    BYTE    interrupts already grabbed by TAME (see #0730)
  8829.  5Dh    BYTE    flags for interrupts which may be acted on (same bits as above)
  8830.  5Eh    BYTE    window or task number for this task
  8831.  5Fh    BYTE    multitasker type (see #0731)
  8832.  60h    BYTE    type of task switching selected (bit flags) (see #0732)
  8833.  61h    BYTE    watch_DOS
  8834.  62h    BYTE    action flags (see #0734)
  8835.  63h    BYTE    old status
  8836.  64h    WORD    signature DA34h
  8837.  
  8838. Bitfields for TAME action flags:
  8839. Bit(s)    Description    (Table 0734)
  8840.  0    TAME enabled
  8841.  1    /FREQ instead of /MAX (X and Y count fields are per tick)
  8842.  2    /TIMEPOLL
  8843.  3    /KEYPOLL
  8844.  4    inhibit timer
  8845.  5    enable status monitoring
  8846. SeeAlso: #0733,#0735
  8847.  
  8848. Format of TAME 2.60 data area:
  8849. Offset    Size    Description    (Table 0735)
  8850.  00h    BYTE    data structure minor version number (02h in TAME 2.60)
  8851.  01h    BYTE    data structure major version number (0Bh in TAME 2.60)
  8852.  02h    DWORD    number of task switches
  8853.  06h    DWORD    number of keyboard polls
  8854.  0Ah    DWORD    number of time polls
  8855.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  8856.  12h    DWORD    time of last /CLEAR or TAME-RES load
  8857.  16h    DWORD    time yielded
  8858.  1Ah    DWORD    time spent polling
  8859.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  8860.  22h  4 BYTEs    ???
  8861.  26h    DWORD    original INT 10h
  8862.  2Ah    DWORD    original INT 14h
  8863.  2Eh    DWORD    original INT 15h
  8864.  32h    DWORD    original INT 16h
  8865.  36h    DWORD    original INT 17h
  8866.  3Ah    DWORD    original INT 21h
  8867.  3Eh    DWORD    original INT 28h
  8868.  42h    WORD    offset of TAME INT 10h handler
  8869.  44h    WORD    offset of TAME INT 14h handler
  8870.  46h    WORD    offset of TAME INT 15h handler
  8871.  48h    WORD    offset of TAME INT 16h handler
  8872.  4Ah    WORD    offset of TAME INT 17h handler
  8873.  4Ch    WORD    offset of TAME INT 21h handler
  8874.  4Eh    WORD    offset of TAME INT 28h handler
  8875.  50h    WORD    X in /max:X,Y or /freq:X,Y
  8876.  52h    WORD    Y in /max:X,Y or /freq:X,Y
  8877.  54h    WORD    number of polls remaining before next task switch
  8878.  56h    WORD    /KEYIDLE value
  8879.  58h  4 BYTEs    ???
  8880.  5Ch    WORD    X in /boost:X,Y
  8881.  5Eh    WORD    Y in /boost:X,Y
  8882.  60h    WORD    /FG: value
  8883.  62h    WORD    task switches remaining until next FGONLY DESQview API call
  8884.  64h    WORD    multitasker version ???
  8885.  66h    WORD    virtual screen segment
  8886.  68h    BYTE    interrupts already grabbed by TAME (see #0730)
  8887.  69h    BYTE    flags for interrupts which may be acted on (same bits as above)
  8888.  6Ah    BYTE    window or task number for this task
  8889.  6Bh    BYTE    multitasker type (see #0731)
  8890.  6Ch    BYTE    type of task switching selected (bit flags) (see #0732)
  8891.  6Dh    BYTE    watch_DOS
  8892.  6Eh    BYTE    action flags (see #0734)
  8893.  6Fh    BYTE    old status
  8894.  70h    WORD    signature DA34h
  8895. --------v-212B16CX0643-----------------------
  8896. INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
  8897.     AX = 2B16h
  8898.     CX = 0643h
  8899. Return: AX = 1603h if installed
  8900. --------R-212B44BX4D41-----------------------
  8901. INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
  8902.     AX = 2B44h ('D')
  8903.     BX = 4D41h ('MA')
  8904.     CX = 7063h ('pc')
  8905.     DX = 4157h ('AW')
  8906. Return: AX = resident program
  8907.         4F4Bh ('OK') if large host resident
  8908.         6F6Bh ('ok') if small host resident
  8909.     CX:DX -> API entry point (see #0736)
  8910. SeeAlso: INT 16/AH=79h
  8911.  
  8912. (Table 0736)
  8913. Call pcANYWHERE API entry point with:
  8914.     AX = 0000h get pcANYWHERE IV version
  8915.         DS:SI -> BYTE buffer for host type code
  8916.         Return: AH = version number
  8917.             AL = revision number
  8918.             DS:DI buffer byte filled with
  8919.             00h full-featured host
  8920.             01h limited-feature LAN host
  8921.             other API may not be supported
  8922.     AX = 0001h initialize operation
  8923.         DS:SI -> initialization request structure (see #0737)
  8924.         Return: AX = function status (see #0740)
  8925.     AX = 0002h get status
  8926.         Return: AH = current operating mode (see #0737)
  8927.             AL = current connection status (see #0739)
  8928.     AX = 0003h suspend remote screen updates
  8929.         Return: AX = function status (see #0740)
  8930.     AX = 0004h resume screen updates
  8931.         Return: AX = function status (see #0740)
  8932.     AX = 0005h end current remote access session
  8933.         DS:SI -> termination request structure (see #0738)
  8934.         Return: AX = function status (see #0740)
  8935.     AX = 0006h remove pcANYWHERE IV from memory
  8936.         Return: AX = status (see #0740)
  8937.     AX = 8000h read data from communications channel
  8938.         DS:BX -> buffer
  8939.         CX = buffer size
  8940.         Return: AX >= number of characters read/available
  8941.             AX < 0 on error
  8942.     AX = 8001h write data to communications channel
  8943.         DS:BX -> buffer
  8944.         CX = buffer size
  8945.         Return: AX >= number of characters written
  8946.             AX < 0 on error
  8947.     AX = 8002h get connection status
  8948.         Return: AX = status
  8949.             > 0000h if connection active
  8950.             = 0000h if connection lost
  8951.             < 0000h on error
  8952.  
  8953. Format of pcANYWHERE initialization request structure:
  8954. Offset    Size    Description    (Table 0737)
  8955.  00h    BYTE    operating mode
  8956.         00h wait for a call
  8957.         01h hot key activates
  8958.         02h incoming call activates
  8959.         03h initiate a call
  8960.  01h  3 BYTEs    user ID to append to config file names
  8961.  04h    WORD    DS-relative pointer to path for config files
  8962.  06h    WORD    DS-relative pointer to path for program files
  8963.  
  8964. Format of pcANYWHERE termination request structure:
  8965. Offset    Size    Description    (Table 0738)
  8966.  00h    BYTE    operating mode after termination
  8967.         00h wait for a call
  8968.         01h hot key activates
  8969.         02h incoming call activates
  8970.         80h use current mode
  8971.         FFh remove from memory
  8972.  
  8973. Bitfields for current connection status:
  8974. Bit(s)    Description    (Table 0739)
  8975.  0    a physical connection is active
  8976.  1    remove screen updating is active
  8977.  2    connection checking is active
  8978.  3    hot key detection is active
  8979.  4    background file transfer is active
  8980.  
  8981. (Table 0740)
  8982. Values for pcANYWHERE function status:
  8983.  0000h    function completed successfully
  8984.  FFD1h    unable to release interrupt vectors
  8985.  FFD2h    unable to release allocated memory
  8986.  FFF2h    unable to establish a connection when operating mode is
  8987.       "Initiate a call"
  8988.  FFF3h    modem configuration is invalid (corrupt config)
  8989.  FFF4h    modem initialization failed (no modem response)
  8990.  FFF5h    the communications device could not be initialized
  8991.  FFF6h    the host operator aborted the function
  8992.  FFF7h    the communications driver type specified in the configuration file is
  8993.       different than the one loaded when pcANYWHERE IV was started
  8994.  FFF9h    the configuration file is invalid
  8995.  FFFAh    the configuration file could not be found
  8996.  FFFBh    no session is active
  8997.  FFFCh    a remote access session is active
  8998.  FFFDh    the specified operating mode is invalid
  8999. --------l-212B--CX5643-----------------------
  9000. INT 21 - Volkov Commander - INSTALLATION CHECK
  9001.     AH = 2Bh
  9002.     CX = 5643h ('VC')
  9003.     DX = 4F4Dh ('OM')
  9004.     AL = function number
  9005.         00h get left window data address
  9006.         01h get right window data address
  9007.         02h get address of general variables
  9008. Return: AL = 00h if Volkov Commander installed
  9009.         AH = version code (27h for v4.00.039)
  9010.         ES:BX -> requested data
  9011. Program: Volkov Commander is a Norton Commander-like DOS shell
  9012. --------G-212B--CX6269-----------------------
  9013. INT 21 - WDTSR.COM - INSTALLATION CHECK
  9014.     AH = 2Bh
  9015.     CX = 6269h ('bi')
  9016.     DX = 742Dh ('t-')
  9017. Return: AL = FFh if not installed
  9018.     AL = 77h ('w') if WDTSR is installed
  9019.         CX = 6174h ('at')
  9020.         DX = 6368h ('ch')
  9021.         ES = resident code segment
  9022.         ES:DI -> identification and configuration data
  9023. Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
  9024.       GmbH
  9025. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h
  9026. --------S-212B--CX6269-----------------------
  9027. INT 21 - bitFOSS - INSTALLATION CHECK
  9028.     AH = 2Bh
  9029.     CX = 6269h ('bi')
  9030.     DX = 7446h ('tF')
  9031. Return: AL = FFh if not installed
  9032.     AL = 4Fh ('O') if bitFOSS is installed
  9033.         CX = 5353h ('SS')
  9034.         DX = 494Ch ('IL')
  9035.         ES = resident code segment
  9036.         ES:DI -> identification data
  9037. Program: bitFOSS is a revision 5 FOSSIL driver
  9038. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh
  9039. --------S-212B--CX6269-----------------------
  9040. INT 21 - bitFOSSI - INSTALLATION CHECK
  9041.     AH = 2Bh
  9042.     CX = 6269h ('bi')
  9043.     DX = 7449h ('tI')
  9044. Return: AL = FFh if not installed
  9045.     AL = 53h ('S') if bitFOSSI is installed
  9046.         CX = 444Eh ('DN')
  9047.         DX = 2D46h ('-F')
  9048.         ES = resident code segment
  9049.         ES:DI -> identification data
  9050. Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
  9051. SeeAlso: AH=2Bh/CX=6269h"bitFOSS",INT 11/AH=BCh
  9052. --------D-212C-------------------------------
  9053. INT 21 - DOS 1+ - GET SYSTEM TIME
  9054.     AH = 2Ch
  9055. Return: CH = hour
  9056.     CL = minute
  9057.     DH = second
  9058.     DL = 1/100 seconds
  9059. Note:    on most systems, the resolution of the system clock is about 5/100sec,
  9060.       so returned times generally do not increment by 1
  9061.     on some systems, DL may always return 00h
  9062. SeeAlso: AH=2Ah,AH=2Dh,AH=E7h"Novell",INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
  9063. SeeAlso: INT 2F/AX=120Dh
  9064. --------v-212C--------------------------
  9065. INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
  9066.     AH = 2Ch
  9067. Return: DL = F2h if resident
  9068. SeeAlso: AX=1812h"VIRUS",AX=2C2Ch
  9069. --------v-212C00CX534B-----------------------
  9070. INT 21 - SKUDO - INSTALLATION CHECK
  9071.     AX = 2C00h
  9072.     CX = 534Bh ('SK')
  9073.     DX = 5544h ('UD')
  9074.     BX = 4F21h ('O!')
  9075. Return: AX = 5349h ('SI') if installed
  9076.         CH = version number
  9077.         CL = subversion
  9078. Program: SKUDO is an antivirus TSR by Jordi Mas
  9079. --------v-212C2C------------------------
  9080. INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
  9081.     AX = 2C2Ch
  9082. Return: AX = 0DCDh if resident
  9083. SeeAlso: AH=2Ch"VIRUS",AX=3000h"VIRUS"
  9084. --------D-212D-------------------------------
  9085. INT 21 - DOS 1+ - SET SYSTEM TIME
  9086.     AH = 2Dh
  9087.     CH = hour
  9088.     CL = minute
  9089.     DH = second
  9090.     DL = 1/100 seconds
  9091. Return: AL = result
  9092.         00h successful
  9093.         FFh invalid time, system time unchanged
  9094. Note:    DOS 3.3+ also sets CMOS clock
  9095. SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
  9096. --------T-212D01CX7820-----------------------
  9097. INT 21 - PC-Mix - INSTALLATION CHECK
  9098.     AX = 2D01h
  9099.     CX = 7820h ('X ')
  9100.     DX = 6D69h ('MI')
  9101. Return: AL = 00h if installed
  9102. --------D-212E--DL00-------------------------
  9103. INT 21 - DOS 1+ - SET VERIFY FLAG
  9104.     AH = 2Eh
  9105.     DL = 00h (DOS 1.x/2.x only)
  9106.     AL = new state of verify flag
  9107.         00h off
  9108.         01h on
  9109. Notes:    default state at system boot is OFF
  9110.     when ON, all disk writes are verified provided the device driver
  9111.       supports read-after-write verification
  9112. SeeAlso: AH=54h
  9113. --------D-212F-------------------------------
  9114. INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
  9115.     AH = 2Fh
  9116. Return: ES:BX -> current DTA
  9117. Note:    under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
  9118. SeeAlso: AH=1Ah
  9119. --------D-2130-------------------------------
  9120. INT 21 - DOS 2+ - GET DOS VERSION
  9121.     AH = 30h
  9122. ---DOS 5+ ---
  9123.     AL = what to return in BH
  9124.         00h OEM number (as for DOS 2.0-4.0x)
  9125.         01h version flag
  9126. Return: AL = major version number (00h if DOS 1.x)
  9127.     AH = minor version number
  9128.     BL:CX = 24-bit user serial number (most versions do not use this)
  9129. ---if DOS <5 or AL=00h---
  9130.     BH = MS-DOS OEM number (see #0741)
  9131. ---if DOS 5+ and AL=01h---
  9132.     BH = version flag
  9133.         bit 3: DOS is in ROM
  9134.         other: reserved (0)
  9135. Notes:    the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
  9136.     the OS/2 v2.x Compatibility Box returns major version 14h (20)
  9137.     OS/2 Warp 3.0 Virtual DOS Machines report v20.30.
  9138.     the Windows/NT DOS box returns version 5.00, subject to SETVER
  9139.     DOS 4.01 and 4.02 identify themselves as version 4.00; use
  9140.       INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
  9141.       and the later PC-DOS 4.0x and MS-DOS 4.0x
  9142.     IBM DOS 6.1 reports its version as 6.00; use the OEM number to
  9143.       distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
  9144.       IBM DOS 6.0)
  9145.     MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
  9146.       correct value
  9147.     Windows95 returns version 7.00 (the underlying MS-DOS), as did the
  9148.       "Chicago" beta (reported in _Microsoft_Systems_Journal_, August 1994)
  9149.     DR DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports IBM v6.00,
  9150.       which some software displays as IBM DOS v6.10 (because of the version
  9151.       mismatch in true IBM DOS, as mentioned above)
  9152.     generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
  9153.       as PC-DOS by returning OEM number 00h
  9154.     the version returned under DOS 4.0x may be modified by entries in
  9155.       the special program list (see #1003 at AH=52h); the version returned
  9156.       under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
  9157.       version number
  9158. SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
  9159. SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=4A33h,INT 2F/AX=E002h
  9160.  
  9161. (Table 0741)
  9162. Values for DOS OEM number:
  9163.  00h    IBM
  9164.  01h    Compaq
  9165.  02h    MS Packaged Product
  9166.  04h    AT&T
  9167.  05h    ZDS (Zenith Electronics)
  9168.  06h    Hewlett-Packard
  9169.  07h    ZDS (Groupe Bull)
  9170.  0Dh    Packard-Bell
  9171.  16h    DEC
  9172.  23h    Olivetti
  9173.  28h    Texas Instruments
  9174.  29h    Toshiba
  9175.  33h    Novell (Windows/386 device IDs only)
  9176.  34h    MS Multimedia Systems (Windows/386 device IDs only)
  9177.  35h    MS Multimedia Systems (Windows/386 device IDs only)
  9178.  4Dh    Hewlett-Packard
  9179.  5Eh    RxDOS
  9180.  66h    PhysTechSoft (PTS-DOS)
  9181.  99h    General Software's Embedded DOS
  9182.  EEh    DR DOS
  9183.  EFh    Novell DOS
  9184.  FDh    FreeDOS
  9185.  FFh    Microsoft, Phoenix
  9186. --------E-2130-------------------------------
  9187. INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
  9188.     AH = 30h
  9189.     EAX = 00003000h
  9190.     EBX = 50484152h ("PHAR")
  9191. Return: AL = major DOS version
  9192.     AH = minor DOS version
  9193.     EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
  9194.         BL = ASCII major version number
  9195.     EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
  9196.         EDX = address of GDA
  9197. SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
  9198. --------v-2130--DXABCD-----------------------
  9199. INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
  9200.     AH = 30h
  9201.     DX = ABCDh
  9202. Return: DX = DCBAh if installed
  9203. SeeAlso: AX=0D20h,AH=30h/SI=1234h,AX=3000h"VIRUS",AX=30F1h
  9204. --------v-2130--SI1234---------------------
  9205. INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
  9206.     AH = 30h
  9207.     SI = 1234h
  9208. Return: AX = FFDDh if resident
  9209. SeeAlso: AH=30h/DX=ABCDh,AX=3000h"VIRUS"
  9210. --------T-213000BX1234-----------------------
  9211. INT 21 - CTask 2.0+ - INSTALLATION CHECK
  9212.     AX = 3000h
  9213.     BX = 1234h
  9214.     DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
  9215. Return: AL = DOS major version
  9216.     AH = DOS minor version
  9217.     CX:BX -> Ctask global data block
  9218. Program: CTask is a multitasking kernel for C written by Thomas Wagner
  9219. Note:    if first eight bytes of returned data block equal eight bytes passed
  9220.       in, CTask is resident
  9221. --------O-213000BX3000-----------------------
  9222. INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
  9223.     AX = 3000h
  9224.     BX = 3000h
  9225.     CX = DX = 3000h
  9226. Return: AX = PC-MOS version
  9227. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  9228.       system by The Software Link, Inc.
  9229. SeeAlso: AH=30h,INT D4/AH=02h,INT D4/AH=10h
  9230. --------v-213000BX614A------------------
  9231. INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
  9232.     AX = 3000h
  9233.     BX = 614Ah ('aJ')
  9234.     CX = 6B63h ('kc')
  9235.     DX = 6C61h ('la')
  9236. Return: BX = ???
  9237. SeeAlso: AX=2C2Ch"VIRUS",AX=3032h"VIRUS"
  9238. --------G-213022-----------------------------
  9239. INT 21 - StopPrg v2.0 - INSTALLATION CHECK
  9240.     AX = 3022h
  9241. Return: AX = DOS version (see AH=30h)
  9242.     CX = 1112h if StopPrg installed
  9243.         BX = segment of resident code
  9244. Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
  9245. Note:    StopPrg may be temporarily disabled by storing 9090h in the word at
  9246.       0000h:04FEh
  9247. --------v-213032DX1234-----------------------
  9248. INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
  9249.     AX = 3032h
  9250.     DX = 1234h
  9251. Return: AX = 5678h if resident
  9252. SeeAlso: AX=3000h/BX=614Ah"VIRUS",AX=30F1h"VIRUS"
  9253. --------v-2130F1-----------------------------
  9254. INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
  9255.     AX = 30F1h
  9256. Return: AL = 00h if resident
  9257. SeeAlso: AH=30h/DX=ABCDh,AX=3032h,AX=330Fh,AX=33DAh
  9258. ----------2130FFCX4445-----------------------
  9259. INT 21 - DESQ??? - INSTALLATION CHECK
  9260.     AX = 30FFh
  9261.     CX = 4445h ("DE")
  9262.     DX = 5351h ("SQ")
  9263. Return: BH = 05h if installed
  9264.     ???
  9265. Note:    called by DUBLDISK.COM v2.6; this function is not supported by
  9266.       DESQview, so it may be for DESQview's precursor DESQ.
  9267. SeeAlso: AX=4404h"DUBLDISK"
  9268. --------D-2131-------------------------------
  9269. INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
  9270.     AH = 31h
  9271.     AL = return code
  9272.     DX = number of paragraphs to keep resident
  9273. Return: never
  9274. Notes:    the value in DX only affects the memory block containing the PSP;
  9275.       additional memory allocated via AH=48h is not affected
  9276.     the minimum number of paragraphs which will remain resident is 11h
  9277.       for DOS 2.x and 06h for DOS 3.0+
  9278.     most TSRs can save some memory by releasing their environment block
  9279.       before terminating (see #0725 at AH=26h,AH=49h)
  9280.     any open files remain open, so one should close any files which will
  9281.       not be used before going resident; to access a file which is left
  9282.       open from the TSR, one must switch PSP segments first (see AH=50h)
  9283. SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
  9284. --------D-2132-------------------------------
  9285. INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
  9286.     AH = 32h
  9287.     DL = drive number (00h = default, 01h = A:, etc)
  9288. Return: AL = status
  9289.         00h successful
  9290.         DS:BX -> Drive Parameter Block (DPB) (see #0742) for specified
  9291.               drive
  9292.         FFh invalid or network drive
  9293. Notes:    the OS/2 compatibility box supports the DOS 3.3 version of this call
  9294.       except for the DWORD at offset 12h
  9295.     this call updates the DPB by reading the disk; the DPB may be accessed
  9296.       via the DOS list of lists (see #0968 at AH=52h) if disk access is not
  9297.       desirable.
  9298.     undocumented prior to the release of DOS 5.0; only the DOS 4.0+
  9299.       version of the DPB has been documented, however
  9300.     supported by DR DOS 3.41+; DR DOS 3.41-6.0 return the same data as
  9301.       MS-DOS 3.31
  9302.     IBM ROM-DOS v4.0 also reports invalid/network (AL=FFh) on the ROM drive
  9303. SeeAlso: AH=1Fh,AH=52h,AX=7302h
  9304.  
  9305. Format of DOS Drive Parameter Block:
  9306. Offset    Size    Description    (Table 0742)
  9307.  00h    BYTE    drive number (00h = A:, 01h = B:, etc)
  9308.  01h    BYTE    unit number within device driver
  9309.  02h    WORD    bytes per sector
  9310.  04h    BYTE    highest sector number within a cluster
  9311.  05h    BYTE    shift count to convert clusters into sectors
  9312.  06h    WORD    number of reserved sectors at beginning of drive
  9313.  08h    BYTE    number of FATs
  9314.  09h    WORD    number of root directory entries
  9315.  0Bh    WORD    number of first sector containing user data
  9316.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  9317.         16-bit FAT if greater than 0FF6h, else 12-bit FAT
  9318.  0Fh    BYTE    number of sectors per FAT
  9319.  10h    WORD    sector number of first directory sector
  9320.  12h    DWORD    address of device driver header (see #0987)
  9321.  16h    BYTE    media ID byte (see #0703)
  9322.  17h    BYTE    00h if disk accessed, FFh if not
  9323.  18h    DWORD    pointer to next DPB
  9324. ---DOS 2.x---
  9325.  1Ch    WORD    cluster containing start of current directory, 0000h=root,
  9326.         FFFFh = unknown
  9327.  1Eh 64 BYTEs    ASCIZ pathname of current directory for drive
  9328. ---DOS 3.x---
  9329.  1Ch    WORD    cluster at which to start search for free space when writing
  9330.  1Eh    WORD    number of free clusters on drive, FFFFh = unknown
  9331. ---DOS 4.0-6.0---
  9332.  0Fh    WORD    number of sectors per FAT
  9333.  11h    WORD    sector number of first directory sector
  9334.  13h    DWORD    address of device driver header (see #0987)
  9335.  17h    BYTE    media ID byte (see #0703)
  9336.  18h    BYTE    00h if disk accessed, FFh if not
  9337.  19h    DWORD    pointer to next DPB
  9338.  1Dh    WORD    cluster at which to start search for free space when writing,
  9339.         usually the last cluster allocated
  9340.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  9341. SeeAlso: #1004
  9342. --------D-2133-------------------------------
  9343. INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
  9344.     AH = 33h
  9345.     AL = subfunction
  9346.         00h get current extended break state
  9347.         Return: DL = current state, 00h = off, 01h = on
  9348.         01h set state of extended ^C/^Break checking
  9349.         DL = new state
  9350.             00h off, check only on character I/O functions
  9351.             01h on, check on all DOS functions
  9352.         Return: (Novell DOS 7) DL = old state of extended Break checks
  9353. Note:    under DOS 3.1+ and DR DOS, this function does not use any of the
  9354.       DOS-internal stacks and may thus be called at any time
  9355. SeeAlso: AX=3302h
  9356. --------D-213302-----------------------------
  9357. INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
  9358.     AX = 3302h
  9359.     DL = new state (00h for OFF, 01h for ON)
  9360. Return: DL = old state of extended BREAK checking
  9361. Notes:    this function does not use any of the DOS-internal stacks and may thus
  9362.       be called at any time; one possible use is modifying Control-Break
  9363.       checking from within an interrupt handler or TSR
  9364.     not supported by DR DOS through version 6.0 (error code 01h);
  9365.       newly-supported by Novell DOS 7
  9366. SeeAlso: AH=33h
  9367. --------D-213303-----------------------------
  9368. INT 21 - DOS 4.0+ - UNUSED
  9369.     AX = 3303h
  9370. Return: nothing
  9371. Note:    this function and AX=3304h were intended to support a proposed
  9372.       code-page switching flag (using two of the ten reserved bytes in
  9373.       the DOS directory entry for codepage information); however, this
  9374.       function has always been a NOP in public releases of DOS and OS/2.
  9375.       See _DOS_Internals_ Chapter 2 for more information
  9376. SeeAlso: AX=3304h
  9377. --------D-213304-----------------------------
  9378. INT 21 - DOS 4.0+ - UNUSED
  9379.     AX = 3304h
  9380. Return: nothing
  9381. Note:    this function and AX=3303h were intended to support a proposed
  9382.       code-page switching flag (using two of the ten reserved bytes in
  9383.       the DOS directory entry for codepage information); however, this
  9384.       function has always been a NOP in public releases of DOS and OS/2.
  9385.       See _DOS_Internals_ Chapter 2 for more information
  9386. SeeAlso: AX=3303h
  9387. --------D-213305-----------------------------
  9388. INT 21 - DOS 4.0+ - GET BOOT DRIVE
  9389.     AX = 3305h
  9390. Return: DL = boot drive (1=A:,...)
  9391. Notes:    fully reentrant
  9392.     NEC 9800-series PCs always call the boot drive A: and assign the other
  9393.       drive letters sequentially to the other drives in the system
  9394.     this call is supported by OS/2 Warp 3.0, but not earlier versions of
  9395.       OS/2; it is also supported by Novell DOS 7
  9396. --------D-213306-----------------------------
  9397. INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
  9398.     AX = 3306h
  9399. Return: BL = major version
  9400.     BH = minor version
  9401.     DL = revision (bits 2-0, all others 0)
  9402.     DH = version flags
  9403.         bit 3: DOS is in ROM
  9404.         bit 4: DOS is in HMA
  9405.     AL = FFh if true DOS version < 5.0
  9406. Notes:    this function always returns the true version number, unlike AH=30h,
  9407.       whose return value may be changed with SETVER
  9408.     because of the conflict from the CBIS redirector (see next
  9409.       entry), programs should check whether BH is less than 100 (64h)
  9410.       and BL is at least 5 before accepting the returned BX as the true
  9411.       version number; however, even this is not entirely reliable when
  9412.       that redirector is loaded
  9413.     fully reentrant
  9414.     OS/2 v2.1 will return BX=0A14h (version 20.10)
  9415.     the Windows NT DOS box returns BX=3205h (version 5.50)
  9416.     Novell DOS 7 returns IBM v6.00, which some software displays as
  9417.       IBM DOS v6.10 (because of the version mismatch in true IBM DOS
  9418.       mentioned for INT 21/AH=30h); versions through Update 15 all
  9419.       return revision code 00h
  9420. BUG:    DR DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
  9421.       subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
  9422.       for invalid subfunctions
  9423. SeeAlso: AH=30h,INT 2F/AX=122Fh,INT 2F/AX=E000h"SETDRVER"
  9424. --------N-213306-----------------------------
  9425. INT 21 - CBIS network - NETWORK REDIRECTOR - ???
  9426.     AX = 3306h
  9427. Return: AX = 3306h
  9428.     BL = ??? (usually 00h)
  9429.     BH = ??? (usually 00h or FFh)
  9430. Note:    unknown function, is in conflict with DOS 5+ version call
  9431. SeeAlso: AX=3306h"DOS"
  9432. --------v-21330F-----------------------------
  9433. INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
  9434.     AX = 330Fh
  9435. Return: AL = 0Fh if resident (DOS returns AL=FFh)
  9436. SeeAlso: AX=30F1h,AX=33DAh,AX=33E0h
  9437. --------k-213341-----------------------------
  9438. INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
  9439.     AX = 3341h
  9440. Return: DX = 1234h if installed
  9441.         CX = resident code segment
  9442. Program: Diet Disk is a public domain transparent data file compressor by
  9443.       Barry Nance
  9444. --------v-2133DA------------------------
  9445. INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
  9446.     AX = 33DAh
  9447. Return: AH = A5h if resident
  9448.         AL = virus version
  9449. SeeAlso: AX=330Fh,AX=33E0h,AX=5643h"VIRUS"
  9450. --------v-2133E0-----------------------------
  9451. INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
  9452.     AX = 33E0h
  9453. Return: AL = E0h if resident (DOS returns AL=FFh)
  9454. SeeAlso: AX=330Fh,AX=33DAh,AX=357Fh
  9455. --------D-2134-------------------------------
  9456. INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
  9457.     AH = 34h
  9458. Return: ES:BX -> one-byte InDOS flag
  9459. Notes:    this function executes on the DOS stack, and thus cannot be called
  9460.       while another DOS function is already executing; you should use
  9461.       this function once at the beginning of the program and store the
  9462.       returned pointer rather than calling it when requiring DOS access
  9463.     the value of InDOS is incremented whenever an INT 21 function begins
  9464.       and decremented whenever one completes
  9465.     during an INT 28 call, it is safe to call some INT 21 functions even
  9466.       though InDOS may be 01h instead of zero
  9467.     InDOS alone is not sufficient for determining when it is safe to
  9468.       enter DOS, as the critical error handling decrements InDOS and
  9469.       increments the critical error flag for the duration of the critical
  9470.       error.  Thus, it is possible for InDOS to be zero even if DOS is
  9471.       busy.
  9472.     SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
  9473.       then zeros it on completion
  9474.     the critical error flag is the byte immediately following InDOS in
  9475.       DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3.0+ and
  9476.       DR DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
  9477.       is located 1AAh bytes BEFORE the critical section flag)
  9478.     for DOS 3.1+, an undocumented call exists to get the address of the
  9479.       critical error flag (see AX=5D06h)
  9480.     this function was undocumented prior to the release of DOS 5.0.
  9481. SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
  9482. --------D-2135-------------------------------
  9483. INT 21 - DOS 2+ - GET INTERRUPT VECTOR
  9484.     AH = 35h
  9485.     AL = interrupt number
  9486. Return: ES:BX -> current interrupt handler
  9487. Note:    under DR DOS 5.0+, this function does not use any of the DOS-internal
  9488.       stacks and may thus be called at any time
  9489. SeeAlso: AH=25h,AX=2503h
  9490. --------E-213501-----------------------------
  9491. INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
  9492.     AX = 3501h
  9493. Return: CF clear if successful
  9494.         BX = new selector
  9495.     CF set on error (no more selectors available)
  9496. Note:    the new selector will be an expand-up read/write data selector with
  9497.       undefined base and limit
  9498. SeeAlso: AX=3502h,INT 31/AX=0000h
  9499. --------E-213502-----------------------------
  9500. INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
  9501.     AX = 3502h
  9502.     BX = selector
  9503. Return: CF clear if successful
  9504.     CF set on error (invalid selector)
  9505. Note:    only selectors allocated via AX=3501h should be deallocated
  9506. SeeAlso: AX=3501h,INT 31/AX=0001h
  9507. --------E-213503-----------------------------
  9508. INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
  9509.     AX = 3503h
  9510.     BX = selector
  9511.     ECX = base address
  9512. Return: CF clear if successful
  9513.     CF set on error (invalid selector)
  9514. SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
  9515. --------E-213504-----------------------------
  9516. INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
  9517.     AX = 3504h
  9518.     BX = selector
  9519. Return: CF clear if successful
  9520.         ECX = absolute base address of selector
  9521.     CF set on error (invalid selector)
  9522. SeeAlso: AX=3503h,INT 31/AX=0006h
  9523. --------E-213505-----------------------------
  9524. INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
  9525.     AX = 3505h
  9526.     BX = selector
  9527.     ECX = desired limit
  9528. Return: CF clear if successful
  9529.         ECX = actual limit set
  9530.     CF set on error (no more selectors available)
  9531. Note:    the limit will be rounded down to nearest 4K boundary if the requested
  9532.       limit is greater than 1MB
  9533. SeeAlso: AX=3503h,INT 31/AX=0008h
  9534. --------E-21350A-----------------------------
  9535. INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
  9536.     AX = 350Ah
  9537.     EBX = absolute physical address
  9538.     ECX = size in bytes of area to map
  9539. Return: CF clear if successful
  9540.     CF set on error (insufficient memory or service refused by DPMI host)
  9541. Notes:    should not make repeated calls for the same physical address
  9542.     there is no provision for unmapping memory
  9543. --------E-21350B-----------------------------
  9544. INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
  9545.     AX = 350Bh
  9546.     DS = default selector for DS
  9547. Return: CF clear
  9548.     EAX = maximum amount of memory which can be allocated via AX=350Ch
  9549. SeeAlso: AX=350Ch
  9550. --------E-21350C-----------------------------
  9551. INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
  9552.     AX = 350Ch
  9553.     ECX = size of block in bytes
  9554.     DS = default DS
  9555. Return: CF clear if successful
  9556.         EAX = near pointer to new block
  9557.         EDX = new lowest legal value for stack
  9558.     CF set on error (requested size not multiple of 4K)
  9559. SeeAlso: AX=350Bh,AX=350Dh
  9560. --------E-21350D-----------------------------
  9561. INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
  9562.     AX = 350Dh
  9563.     EBX = current ESP value
  9564.     ECX = size of block in bytes
  9565.     DS = default DS
  9566. Return: CF clear if successful
  9567.         EBX = new value for ESP
  9568.         EDX = suggested new limit for SS
  9569.     CF set on error
  9570. Note:    this function should only be called once during initialization
  9571. SeeAlso: AX=350Bh,AX=350Ch
  9572. --------v-21357F-----------------------------
  9573. INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
  9574.     AX = 357Fh
  9575. Return: DX = FFFFh if installed
  9576. SeeAlso: AX=33E0h,AX=3DFFh
  9577. --------D-2136-------------------------------
  9578. INT 21 - DOS 2+ - GET FREE DISK SPACE
  9579.     AH = 36h
  9580.     DL = drive number (00h = default, 01h = A:, etc)
  9581. Return: AX = FFFFh if invalid drive
  9582.     else
  9583.         AX = sectors per cluster
  9584.         BX = number of free clusters
  9585.         CX = bytes per sector
  9586.         DX = total clusters on drive
  9587. Notes:    free space on drive in bytes is AX * BX * CX
  9588.     total space on drive in bytes is AX * CX * DX
  9589.     "lost clusters" are considered to be in use
  9590.     according to Dave Williams' MS-DOS reference, the value in DX is
  9591.       incorrect for non-default drives after ASSIGN is run
  9592.     this function does not return proper results on CD-ROMs;
  9593.       use AX=4402h"CD-ROM" instead
  9594. SeeAlso: AH=1Bh,AH=1Ch,AX=4402h"CD-ROM",AX=7303h
  9595. --------D-213700-----------------------------
  9596. INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
  9597.     AX = 3700h
  9598. Return: AL = status
  9599.         00h successful
  9600.         DL = current switch character
  9601.         FFh unsupported subfunction
  9602. Desc:    Determine the character which is used to introduce command switches.
  9603.       This setting is ignored by MS-DOS commands in version 4.0 and higher,
  9604.       but is honored by many third-party programs and by Novell DOS 7
  9605.       external commands
  9606. BUG:    Novell DOS 7's COMMAND.COM fails to honor the SwitChar setting for
  9607.       internal commands even though COMMAND.COM honors it in its own
  9608.       command tail (i.e. COMMAND /?)
  9609. Notes:    documented in some OEM versions of some releases of DOS
  9610.     supported by OS/2 compatibility box
  9611.     always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR DOS 3.41-6.0
  9612.     Novell DOS 7 COMMAND.COM indicates switch characters other than '/'
  9613.       by changing the first backslash (and only the first one) in the
  9614.       path it prints for PROMPT $p with a forward slash
  9615. SeeAlso: AX=3701h
  9616. --------D-213701-----------------------------
  9617. INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
  9618.     AX = 3701h
  9619.     DL = new switch character
  9620. Return: AL = status
  9621.         00h successful
  9622.         FFh unsupported subfunction
  9623. Notes:    documented in some OEM versions of some releases of DOS
  9624.     supported by OS/2 compatibility box and Novell DOS 7
  9625.     ignored by MS-DOS 5+ and DR DOS 3.41-6.0; DR DOS 6.0 and Novell DOS 7
  9626.       leave AX unchanged
  9627. SeeAlso: AX=3700h
  9628. --------D-2137-------------------------------
  9629. INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
  9630.     AH = 37h
  9631.     AL = subfunction
  9632.         02h get availdev flag
  9633.         Return: DL = 00h \DEV\ must precede character device names
  9634.                = nonzero \DEV\ is optional
  9635.         03h set availdev flag
  9636.         DL = new state
  9637.             00h        \DEV\ is mandatory
  9638.             nonzero    \DEV\ is optional
  9639. Return: AL = status
  9640.         00h successful
  9641.         FFh unsupported subfunction
  9642. Notes:    all versions of DOS from 2.00 allow \DEV\ to be prepended to device
  9643.       names without generating an error even if the directory \DEV does
  9644.       not actually exist (other paths generate an error if they do not
  9645.       exist).
  9646.     although MS-DOS 3.3+, DR DOS 3.41+, and Novell DOS 7 accept these
  9647.       calls, they have no effect, and AL=02h always returns DL=FFh (except
  9648.       for Novell DOS 7, which leaves AX unchanged for both subfunctions)
  9649. --------k-2137D0BX899D-----------------------
  9650. INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
  9651.     AX = 37D0h
  9652.     BX = 899Dh ('DI' + 'ET')
  9653. Return: AL = FFh if not present as TSR (default return value from DOS)
  9654.     AX = 0000h if installed as a TSR
  9655.         CX = 899Dh
  9656.         DX = version ID
  9657. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  9658. SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
  9659. --------k-2137D1BX899D-----------------------
  9660. INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
  9661.     AX = 37D1h
  9662.     BX = 899Dh ('DI' + 'ET')
  9663. Return: AX = 0000h
  9664.     CX = code segment of TSR part of DIET.EXE
  9665.     DX = memory block segment of TSR DIET.EXE
  9666.         (0000h if installed as device driver)
  9667. SeeAlso: AX=37D0h,AX=37DFh
  9668. --------k-2137D2BX899D-----------------------
  9669. INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
  9670.     AX = 37D2h
  9671.     BX = 899Dh ('DI' + 'ET')
  9672. Return: AX = 0000h
  9673.     DL = control flag (00h active, else disabled)
  9674.     DH = skip flag (nonzero while TSR active)
  9675. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  9676. --------k-2137D3BX899D-----------------------
  9677. INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
  9678.     AX = 37D3h
  9679.     BX = 899Dh ('DI' + 'ET')
  9680.     DL = control flag (00h active, else disabled)
  9681.     DH = skip flag (00h)
  9682. Return: AX = 0000h
  9683. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  9684. --------k-2137D4BX899D-----------------------
  9685. INT 21 - DIET v1.43e - GET TSR OPTIONS
  9686.     AX = 37D4h
  9687.     BX = 899Dh ('DI' + 'ET')
  9688. Return: AX = 0000h
  9689.     DX = TSR options (see #0743)
  9690. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  9691.  
  9692. Bitfields for DIET TSR options:
  9693. Bit(s)    Description    (Table 0743)
  9694.  0    automated compression of DIETed file
  9695.  1    automated compression of newly-created file
  9696.  2    suppress DIET message
  9697.  3    display original file size
  9698.  4-15    reserved (0)
  9699. --------k-2137D5BX899D-----------------------
  9700. INT 21 - DIET v1.43e - SET TSR OPTIONS
  9701.     AX = 37D5h
  9702.     BX = 899Dh ('DI' + 'ET')
  9703.     DX = TSR options (see #0743)
  9704. Return: AX = 0000h
  9705. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  9706. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  9707. --------k-2137D6BX899D-----------------------
  9708. INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
  9709.     AX = 37D6h
  9710.     BX = 899Dh ('DI' + 'ET')
  9711. Return: AX = 0000h
  9712.     DS:DX -> name of temporary directory or 0000h:0000h for current dir
  9713. SeeAlso: AX=37D0h,AX=37D7h
  9714. --------k-2137D7BX899D-----------------------
  9715. INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
  9716.     AX = 37D7h
  9717.     BX = 899Dh ('DI' + 'ET')
  9718.     DS:DX -> ASCIZ name of temporary directory (max 61 chars)
  9719.         0000h:0000h for current directory
  9720. Return: AX = 0000h
  9721. Note:    the specified directory name must include a drive letter and end with
  9722.       a backslash
  9723. SeeAlso: AX=37D0h,AX=37D6h
  9724. --------k-2137DCBX899D-----------------------
  9725. INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
  9726.     AX = 37DCh
  9727.     BX = 899Dh ('DI' + 'ET')
  9728.     DS:DX -> external procedure (see #0744)
  9729. Return: AX = 0000h
  9730. Note:    the resident code will call the specified external procedure at the
  9731.       beginning of decompression and when compression is exited on failure
  9732. SeeAlso: AX=37DDh
  9733.  
  9734. (Table 0744)
  9735. Values DIET external procedure is called with:
  9736.     STACK:    WORD    class
  9737.             FFFDh creation failed for unknown reasons
  9738.             FFFEh creation failed due to lack of space
  9739.             FFFFh file creation error
  9740.             else file handle of DIETed file to be decompressed
  9741.         DWORD    -> compressed filename
  9742.         DWORD    -> decompressed or temporary filename
  9743. Return: SI,DI,BP,DS,ES must be preserved by external procedure
  9744. --------k-2137DDBX899D-----------------------
  9745. INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
  9746.     AX = 37DDh
  9747.     BX = 899Dh ('DI' + 'ET')
  9748. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  9749. Note:    unlinks the external procedure specified by AX=37DCh
  9750. SeeAlso: AX=37DCh
  9751. --------k-2137DEBX899D-----------------------
  9752. INT 21 - DIET v1.43e - READ EMS STATUS
  9753.     AX = 37DEh
  9754.     BX = 899Dh ('DI' + 'ET')
  9755. Return: AX = 0000h
  9756.     CX = EMS status
  9757.         0000h not used
  9758.         0001h used as work area
  9759.         0002h used for code and as work area
  9760.     DX = EMM handle when EMS is in use
  9761. --------k-2137A0BX6A6D-----------------------
  9762. INT 21 - XPACK v1.52 - INSTALLATION CHECK
  9763.     AX = 37A0h
  9764.     BX = 6A6Dh
  9765. Return: AL = FFh if not present as TSR (default return value from DOS)
  9766.     AX = 0000h if installed as a TSR
  9767.         CX = 6A6Dh ('jm')
  9768.         DX = version ID (0152h)
  9769. Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
  9770. SeeAlso: AX=37A1h/BX=6A6Dh,AX=37A2h/BX=6A6Dh,AX=37A3h/BX=6A6Dh
  9771. --------k-2137A1BX6A6D-----------------------
  9772. INT 21 - XPACK v1.52 - UNINSTALL TSR
  9773.     AX = 37A1h
  9774.     BX = 6A6Dh
  9775. Return: AX = status
  9776.         0000h successful
  9777.         FFFFh failed
  9778. Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
  9779. SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A2h/BX=6A6Dh,AX=37A3h/BX=6A6Dh
  9780. --------k-2137A2BX6A6D-----------------------
  9781. INT 21 - XPACK v1.52 - GET TSR STATUS
  9782.     AX = 37A2h
  9783.     BX = 6A6Dh
  9784. Return: AX = 0000h (successful)
  9785.     DL = status (01h active, 00h disabled)
  9786. SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A1h/BX=6A6Dh,AX=37A3h/BX=6A6Dh
  9787. --------k-2137A3BX6A6D-----------------------
  9788. INT 21 - XPACK v1.52 - SET TSR STATUS
  9789.     AX = 37A3h
  9790.     BX = 6A6Dh
  9791.     DL = status (01h active, 00h disabled)
  9792. Return: AX = 0000h (successful)
  9793. SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A1h/BX=6A6Dh,AX=37A2h/BX=6A6Dh
  9794. --------k-2137DFBX899D-----------------------
  9795. INT 21 - DIET v1.43e - UNINSTALL TSR
  9796.     AX = 37DFh
  9797.     BX = 899Dh ('DI' + 'ET')
  9798. Return: AX = status
  9799.         0000h successful
  9800.         00FFh failed
  9801. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  9802. SeeAlso: AX=37D0h
  9803. Index:    uninstall;DIET
  9804. --------D-2138-------------------------------
  9805. INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
  9806.     AH = 38h
  9807. --DOS 2.x--
  9808.     AL = 00h get current-country info
  9809.     DS:DX -> buffer for returned info (see #0745,#0746)
  9810. Return: CF set on error
  9811.         AX = error code (02h)
  9812.     CF clear if successful
  9813.         AX = country code (MS-DOS 2.11 only)
  9814.         buffer at DS:DX filled
  9815. --DOS 3.0+--
  9816.     AL = 00h for current country
  9817.     AL = 01h thru 0FEh for specific country with code <255 (see #0747)
  9818.     AL = 0FFh for specific country with code >= 255
  9819.        BX = 16-bit country code (see #0747)
  9820.     DS:DX -> buffer for returned info (see #0746)
  9821. Return: CF set on error
  9822.         AX = error code (02h)
  9823.     CF clear if successful
  9824.         AX = country code (Novell NWDOS v7.0)
  9825.         BX = country code
  9826.         DS:DX buffer filled
  9827. Note:    this function is not supported by the Borland DPMI host, but no error
  9828.       is returned; as a workaround, one should allocate a buffer in
  9829.       conventional memory with INT 31/AX=0100h and simulate an INT 21 with
  9830.       INT 31/AX=0300h
  9831. SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
  9832.  
  9833. Format of DOS 2.00-2.10 country info:
  9834. Offset    Size    Description    (Table 0745)
  9835.  00h    WORD    date format  0 = USA    mm dd yy
  9836.                  1 = Europe dd mm yy
  9837.                  2 = Japan    yy mm dd
  9838.  02h    BYTE    currency symbol
  9839.  03h    BYTE    00h
  9840.  04h    BYTE    thousands separator char
  9841.  05h    BYTE    00h
  9842.  06h    BYTE    decimal separator char
  9843.  07h    BYTE    00h
  9844.  08h 24 BYTEs    reserved
  9845.  
  9846. Format of DOS 2.11+ country info:
  9847. Offset    Size    Description    (Table 0746)
  9848.  00h    WORD    date format (see #0745)
  9849.  02h  5 BYTEs    ASCIZ currency symbol string
  9850.  07h  2 BYTEs    ASCIZ thousands separator
  9851.  09h  2 BYTEs    ASCIZ decimal separator
  9852.  0Bh  2 BYTEs    ASCIZ date separator
  9853.  0Dh  2 BYTEs    ASCIZ time separator
  9854.  0Fh    BYTE    currency format
  9855.         bit 2 = set if currency symbol replaces decimal point
  9856.         bit 1 = number of spaces between value and currency symbol
  9857.         bit 0 = 0 if currency symbol precedes value
  9858.             1 if currency symbol follows value
  9859.  10h    BYTE    number of digits after decimal in currency
  9860.  11h    BYTE    time format
  9861.         bit 0 = 0 if 12-hour clock
  9862.             1 if 24-hour clock
  9863.  12h    DWORD    address of case map routine
  9864.         (FAR CALL, AL = character to map to upper case [>= 80h])
  9865.  16h  2 BYTEs    ASCIZ data-list separator
  9866.  18h 10 BYTEs    reserved
  9867.  
  9868. (Table 0747)
  9869. Values for country code:
  9870.  001h    United States
  9871.  002h    Canadian-French
  9872.  003h    Latin America
  9873.  01Fh    Netherlands
  9874.  020h    Belgium
  9875.  021h    France
  9876.  022h    Spain
  9877.  024h    Hungary (not supported by DR DOS 5.0)
  9878.  026h    Yugoslavia (not supported by DR DOS 5.0)
  9879.  027h    Italy
  9880.  029h    Switzerland
  9881.  02Ah    Czechoslovakia/Tjekia (not supported by DR DOS 5.0)
  9882.  02Bh    Austria (DR DOS 5.0)
  9883.  02Ch    United Kingdom
  9884.  02Dh    Denmark
  9885.  02Eh    Sweden
  9886.  02Fh    Norway
  9887.  030h    Poland (not supported by DR DOS 5.0)
  9888.  031h    Germany
  9889.  037h    Brazil (not supported by DR DOS 5.0)
  9890.  03Dh    International English [Australia in DR DOS 5.0]
  9891.  051h    Japan (DR DOS 5.0, MS-DOS 5.0+)
  9892.  052h    Korea (DR DOS 5.0)
  9893.  056h    China (MS-DOS 5.0+)
  9894.  058h    Taiwan (MS-DOS 5.0+)
  9895.  05Ah    Turkey (MS-DOS 5.0+)
  9896.  15Fh    Portugal
  9897.  162h    Iceland
  9898.  166h    Finland
  9899.  311h    Middle East/Saudi Arabia (DR DOS 5.0,MS-DOS 5.0+)
  9900.  3CCh    Israel (DR DOS 5.0,MS-DOS 5.0+)
  9901. --------D-2138--DXFFFF-----------------------
  9902. INT 21 - DOS 3.0+ - SET COUNTRY CODE
  9903.     AH = 38h
  9904.     DX = FFFFh
  9905.     AL = 01h thru FEh for specific country with code <255
  9906.     AL = FFh for specific country with code >= 255
  9907.        BX = 16-bit country code (see #0747)
  9908. Return: CF set on error
  9909.         AX = error code (see #1020 at AH=59h/BX=0000h)
  9910.     CF clear if successful
  9911. Note:    not supported by OS/2
  9912. SeeAlso: INT 2F/AX=1403h
  9913. --------D-2139-------------------------------
  9914. INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
  9915.     AH = 39h
  9916.     DS:DX -> ASCIZ pathname
  9917. Return: CF clear if successful
  9918.         AX destroyed
  9919.     CF set on error
  9920.         AX = error code (03h,05h) (see #1020 at AH=59h/BX=0000h)
  9921. Notes:    all directories in the given path except the last must exist
  9922.     fails if the parent directory is the root and is full
  9923.     DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
  9924.       it is not possible to make that directory the current directory
  9925.       because the path would exceed 64 characters
  9926.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  9927. SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AX=7139h,AH=E2h/SF=0Ah,INT 2F/AX=1103h
  9928. SeeAlso: INT 60/DI=0511h
  9929. --------D-213A-------------------------------
  9930. INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
  9931.     AH = 3Ah
  9932.     DS:DX -> ASCIZ pathname of directory to be removed
  9933. Return: CF clear if successful
  9934.         AX destroyed
  9935.     CF set on error
  9936.         AX = error code (03h,05h,06h,10h) (see #1020 at AH=59h/BX=0000h)
  9937. Notes:    directory must be empty (contain only '.' and '..' entries)
  9938.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  9939. SeeAlso: AH=39h,AH=3Bh,AX=713Ah,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h
  9940. --------D-213B-------------------------------
  9941. INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
  9942.     AH = 3Bh
  9943.     DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
  9944. Return: CF clear if successful
  9945.         AX destroyed
  9946.     CF set on error
  9947.         AX = error code (03h) (see #1020 at AH=59h/BX=0000h)
  9948. Notes:    if new directory name includes a drive letter, the default drive is
  9949.       not changed, only the current directory on that drive
  9950.     changing the current directory also changes the directory in which
  9951.       FCB file calls operate
  9952.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  9953. SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h
  9954. --------D-213C-------------------------------
  9955. INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
  9956.     AH = 3Ch
  9957.     CX = file attributes (see #0748)
  9958.     DS:DX -> ASCIZ filename
  9959. Return: CF clear if successful
  9960.         AX = file handle
  9961.     CF set on error
  9962.         AX = error code (03h,04h,05h) (see #1020 at AH=59h/BX=0000h)
  9963. Notes:    if a file with the given name exists, it is truncated to zero length
  9964.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  9965.     DR DOS checks the system password or explicitly supplied password at
  9966.       the end of the filename against the reserved field in the directory
  9967.       entry before allowing access
  9968. SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
  9969.  
  9970. Bitfields for file attributes:
  9971. Bit(s)    Description    (Table 0748)
  9972.  0    read-only
  9973.  1    hidden
  9974.  2    system
  9975.  3    volume label (ignored)
  9976.  4    reserved, must be zero (directory)
  9977.  5    archive bit
  9978.  7    if set, file is shareable under Novell NetWare
  9979. --------D-213D-------------------------------
  9980. INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
  9981.     AH = 3Dh
  9982.     AL = access and sharing modes (see #0749)
  9983.     DS:DX -> ASCIZ filename
  9984.     CL = attribute mask of files to look for (server call only)
  9985. Return: CF clear if successful
  9986.         AX = file handle
  9987.     CF set on error
  9988.         AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #1020 at AH=59h)
  9989. Notes:    file pointer is set to start of file
  9990.     file handles which are inherited from a parent also inherit sharing
  9991.       and access restrictions
  9992.     files may be opened even if given the hidden or system attributes
  9993.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  9994.     DR DOS checks the system password or explicitly supplied password at
  9995.       the end of the filename against the reserved field in the directory
  9996.       entry before allowing access
  9997.     sharing modes are only effective on local drives if SHARE is loaded
  9998. BUG:    Novell DOS 7 SHARE v1.00 would refuse file access in the cases in
  9999.       #0750 marked with [1] (read-only open of a read-only file
  10000.       which had previously been opened in compatibility mode); this was
  10001.       fixed in SHARE v1.01 of 09/29/94
  10002. SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
  10003.  
  10004. Bitfields for access and sharing modes:
  10005. Bit(s)    Description    (Table 0749)
  10006.  2-0    access mode
  10007.     000 read only
  10008.     001 write only
  10009.     010 read/write
  10010.     011 (DOS 5+ internal) passed to redirector on EXEC to allow
  10011.         case-sensitive filenames
  10012.  3    reserved (0)
  10013.  6-4    sharing mode (DOS 3.0+) (see #0750)
  10014.     000 compatibility mode
  10015.     001 "DENYALL" prohibit both read and write access by others
  10016.     010 "DENYWRITE" prohibit write access by others
  10017.     011 "DENYREAD" prohibit read access by others
  10018.     100 "DENYNONE" allow full access by others
  10019.     111 network FCB (only available during server call)
  10020.  7    inheritance
  10021.     if set, file is private to current process and will not be inherited
  10022.       by child processes
  10023. SeeAlso: #1122
  10024.  
  10025. (Table 0750)
  10026. Values of DOS file sharing behavior:
  10027.       |    Second and subsequent Opens
  10028.  First      |Compat  Deny      Deny     Deny    Deny
  10029.  Open      |       All      Write     Read    None
  10030.       |R W RW R W RW R W RW R W RW R W RW
  10031.  - - - - -| - - - - - - - - - - - - - - - - -
  10032.  Compat R |Y Y Y  N N N     1 N N    N N N  1 N N
  10033.     W |Y Y Y  N N N     N N N    N N N  N N N
  10034.     RW|Y Y Y  N N N     N N N    N N N  N N N
  10035.  - - - - -|
  10036.  Deny    R |C C C  N N N     N N N    N N N  N N N
  10037.  All    W |C C C  N N N     N N N    N N N  N N N
  10038.     RW|C C C  N N N     N N N    N N N  N N N
  10039.  - - - - -|
  10040.  Deny    R |2 C C  N N N     Y N N    N N N  Y N N
  10041.  Write    W |C C C  N N N     N N N    Y N N  Y N N
  10042.     RW|C C C  N N N     N N N    N N N  Y N N
  10043.  - - - - -|
  10044.  Deny    R |C C C  N N N     N Y N    N N N  N Y N
  10045.  Read    W |C C C  N N N     N N N    N Y N  N Y N
  10046.     RW|C C C  N N N     N N N    N N N  N Y N
  10047.  - - - - -|
  10048.  Deny    R |2 C C  N N N     Y Y Y    N N N  Y Y Y
  10049.  None    W |C C C  N N N     N N N    Y Y Y  Y Y Y
  10050.     RW|C C C  N N N     N N N    N N N  Y Y Y
  10051. Legend: Y = open succeeds, N = open fails with error code 05h
  10052.     C = open fails, INT 24 generated
  10053.     1 = open succeeds if file read-only, else fails with error code
  10054.     2 = open succeeds if file read-only, else fails with INT 24
  10055. SeeAlso: #0977
  10056. --------v-213D76-----------------------------
  10057. INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
  10058.     AX = 3D76h
  10059. Return: AX = 763Dh if resident
  10060. SeeAlso: AX=357Fh,AX=3DFFh
  10061. --------v-213DFF-----------------------------
  10062. INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
  10063.     AX = 3DFFh
  10064. Return: AX = 4A44h if resident
  10065. SeeAlso: AX=3D76h,AX=4203h
  10066. --------D-213E-------------------------------
  10067. INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
  10068.     AH = 3Eh
  10069.     BX = file handle
  10070. Return: CF clear if successful
  10071.         AX destroyed
  10072.     CF set on error
  10073.         AX = error code (06h) (see #1020 at AH=59h/BX=0000h)
  10074. Notes:    if the file was written to, any pending disk writes are performed, the
  10075.       time and date stamps are set to the current time, and the directory
  10076.       entry is updated
  10077.     recent versions of DOS preserve AH because some versions of Multiplan
  10078.       had a bug which depended on AH being preserved
  10079. SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
  10080. --------!---Section--------------------------
  10081.